Laravel 不会在刷新时在“迁移”表中创建记录

Posted

技术标签:

【中文标题】Laravel 不会在刷新时在“迁移”表中创建记录【英文标题】:Laravel does not create a record in `migrations` table on refresh 【发布时间】:2018-11-02 01:44:37 【问题描述】:

我有一个尴尬的问题,每运行一次php artisan migrate:refresh --seedmigrations 表是空的,虽然它应该在迁移后添加初始迁移记录: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】:

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

SET AUTOCOMMIT = 0;

在文件末尾没有设置回 1。

【讨论】:

我本可以搜索很长时间,以为是 Laravel 错误,但 Google 搜索救了我。谢谢!

以上是关于Laravel 不会在刷新时在“迁移”表中创建记录的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Laravel 5 中创建表迁移

如何从迁移中创建 Laravel 模型?

在 Laravel 中创建模型时使用受保护的 $table 变量

如何在 Laravel 中创建数据库模式(表)?

在 Laravel 中创建用户表

如何在Laravel中创建唯一索引?