代码之家  ›  专栏  ›  技术社区  ›  naneri

刷新时,laravel不会在“migrations”表中创建记录

  •  0
  • naneri  · 技术社区  · 7 年前

    我每次跑步都有个棘手的问题 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 回复  |  直到 7 年前
        1
  •  0
  •   naneri    7 年前

    我发现了。在.sql文件中似乎有一行字:

    SET AUTOCOMMIT = 0;

    在文件结尾处没有设置回1。