Artisan迁移因(非常)大量的数据插入而失败

时间:2018-10-28 12:18:59

标签: php laravel artisan artisan-migrate laradock

因此,在最近的项目中,我一直在使用Laravel的数据库迁移,并且一切正常,除了一个具有约380万行的“城市”表。 预期效果如下:

DB::table('cities')->insert([
    'name' => 'Dublin'
]);

但是,当我向上述插入数组中添加380万行时,artisan migration命令只是失败/超时。

我在这里缺少什么吗?还是有更好的方法呢?

城市迁移的文件大小为365 MB,实际上使Phpstorm崩溃(内存不足错误)。 我想知道是否存在将大型数据库迁移拆分为较小文件的方法?

PHP 7.2 Laravel 5.7 Docker / Laradock。

3 个答案:

答案 0 :(得分:1)

我会认为它在Job中执行,并在redis队列上运行。

所以只需编写一个简单的命令即可调度作业。我也建议你像1000er块一样写数据:)

答案 1 :(得分:1)

在这种情况下,最好使用Job,因为Job可以使用大块数据批量插入,并且如addi2113所述,如果用于测试环境,则应使用种子。

答案 2 :(得分:0)

首先,您可以在两个播种机中记录

您必须在php / php.ini设置中提高内存限制

How to assign more memory to docker container