Laravel не создает запись в таблице `миграций` при обновлении - PullRequest
0 голосов
/ 23 мая 2018

У меня неловкая проблема, каждый второй раз, когда я запускаю php artisan migrate:refresh --seed таблица migrations пуста, хотя после миграции должна быть добавлена ​​начальная запись миграции: 2018_05_02_114819_add_initial_migration

Вот мой код миграции(это импорт старой схемы базы данных):

<?php

use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\File;
use Illuminate\Support\Facades\Schema;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;

class AddInitialMigration extends Migration
{
    /**
     * Run the migrations.
     *
     * @return void
     */
    public function up()
    {
        if(!Schema::hasTable('users')){
            DB::unprepared(File::get(database_path('sam.sql')));
        }
    }

    /**
     * Reverse the migrations.
     *
     * @return void
     */
    public function down()
    {
        DB::statement('SET FOREIGN_KEY_CHECKS=0');

        foreach (DB::select('SHOW TABLES') as $table) {

            $table_array = get_object_vars($table);
            if($table_array[key($table_array)] !== 'migrations'){
                DB::statement('DROP TABLE ' . $table_array[key($table_array)]);
            }

        }

        DB::statement('SET FOREIGN_KEY_CHECKS=1');
    }
}

1 Ответ

0 голосов
/ 29 мая 2018

Я узнал это.Кажется, что в файле .sql была строка, которая гласила:

SET AUTOCOMMIT = 0;

, который не был установлен обратно в 1 в конце файла.

...