为什么我的laravel迁移脚本无法正常工作?

时间:2020-08-13 14:38:00

标签: laravel

我有以下脚本(遵循here的建议):

public function up()
{
  set_time_limit(1000);
  $sqlFileDirectory =
    __DIR__.DIRECTORY_SEPARATOR.
    '..'.DIRECTORY_SEPARATOR.
    '..'.DIRECTORY_SEPARATOR.
    '..'.DIRECTORY_SEPARATOR.
    'db'.DIRECTORY_SEPARATOR.
    'imports'.DIRECTORY_SEPARATOR
  ;
  $dir = new \DirectoryIterator($sqlFileDirectory);
  foreach ($dir as $fileinfo)
  {
    if (!$fileinfo->isDot())
    {
      $sqlFile = $sqlFileDirectory.$fileinfo->getFilename();
      DB::unprepared(file_get_contents($sqlFile));

    }
  }
}

它所做的只是在/ db / imports文件夹中导入sql文件。它获取文件内容,然后执行以下操作:

DB::unprepared(file_get_contents($sqlFile));

完成后,终端甚至会说:

$ php artisan migrate
Migrating: 2020_08_13_111729_import_various_sql_files_from_existing_site
Migrated:  2020_08_13_111729_import_various_sql_files_from_existing_site (0.02 seconds)

但是当我查看迁移表时,什么都没有!

如果我跑步:

php artisan migrate

然后再次说:

$ php artisan migrate
Migrating: 2020_08_13_111729_import_various_sql_files_from_existing_site
Migrated:  2020_08_13_111729_import_various_sql_files_from_existing_site (0.02 seconds)

我删除此代码的那一刻

DB::unprepared(file_get_contents($sqlFile));

然后创建迁移表中的条目。

有想法吗?

我什至尝试将其尝试捕获。还是没有运气。

我的怀疑也许是sql文件之一抛出错误,导致迁移脚本无法创建条目。

有想法吗?

1 个答案:

答案 0 :(得分:1)

找到了。 MySqlDump将此添加到我的导出的顶部:

SET AUTOCOMMIT = 0;

所以我在up()的底部添加了它:

DB::unprepared(' SET AUTOCOMMIT = 1; ');