0

因此,我在最近的一个项目中一直在使用 Laravel 的数据库迁移,并且一切正常,除了一个包含大约 380 万行的“城市”表。以下按预期工作:

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

但是,当我将额外的 380 万行添加到上述插入数组时,工匠迁移命令只是失败/超时。

我在这里遗漏了什么还是有更好的方法来做到这一点?

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

PHP 7.2 Laravel 5.7 Docker/Laradock。

4

3 回答 3

1

在这种情况下使用作业更可取,它可以使用大块数据批量插入,就像 addi2113 解释的那样,如果用于测试环境,您应该使用播种机。

于 2018-10-28T15:38:56.340 回答
1

我会考虑在 Job 中执行它并在 redis 队列上运行它。

所以只需编写一个简单的命令来调度作业。另外,我建议您将数据分块写入,例如 1000er 块 :)

于 2018-10-28T13:15:18.027 回答
0

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

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

如何为 docker 容器分配更多内存

于 2018-10-28T13:21:08.850 回答