Как удалить схему с подключением к таблице в другой базе данных? - PullRequest
0 голосов
/ 16 мая 2019

В моем приложении Laravel у меня есть подключения к различным базам данных, и когда мне нужно обновить таблицы в каждой из баз данных новыми фиктивными данными (я делаю это с помощью команды php artisan migrate:fresh --seed ) У меня всегда есть эта ошибка

SQLSTATE [42S01]: Базовая таблица или представление уже существует: 1050 Таблица 'table_name' уже существует

, что странно, потому что у меня есть метод down() в моем классе миграции

class CreateExampleTable extends Migration
{
    /**
     * Run the migrations.
     *
     * @return void
     */
    public function up()
    {
        Schema::connection('conn2')->create('table_name', function (Blueprint $table) {
            $table->bigIncrements('id');
            $table->timestamps();
        });
    }

    /**
     * Reverse the migrations.
     *
     * @return void
     */
    public function down()
    {
        Schema::connection('conn2')->dropIfExists('table_name');
    }
}

1 Ответ

0 голосов
/ 16 мая 2019

Если вы используете migrate:refresh вместо fresh, он откатит базу данных, используя ваши down() методы.

Я думаю, что проблема не в вашем down(), а в вашем up():он пытается создать таблицу, но таблица с таким именем уже существует.

Я бы предложил сделать что-то вроде:

if (!Schema::hasTable('tbl_name')) {
     // create table
}

Возможно, вам также придется указать, какую базу данных вы используетев миграциях.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...