Произошел сбой миграции Artisan из-за (очень) большого количества вставок данных - PullRequest
0 голосов
/ 28 октября 2018

Итак, я использовал миграцию базы данных Laravel в недавнем проекте, и все работает отлично, за исключением таблицы «городов», в которой около 3,8 миллионов строк.Следующее работает, как и ожидалось:

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

Но когда я добавляю дополнительные 3,8 миллиона строк к указанному выше массиву вставки, команда кустарного переноса просто терпит неудачу / время ожидания.или есть лучший способ сделать это?

Размер файла миграции городов составляет 365 МБ, что фактически приводит к сбою Phpstorm (из-за ошибок памяти).Мне интересно, есть ли способ разделить миграцию больших БД на файлы меньшего размера?

PHP 7.2 Laravel 5.7 Docker / Laradock.

Ответы [ 3 ]

0 голосов
/ 28 октября 2018

Прежде всего вы можете выводить записи в двух сеялках

Вы должны увеличить лимит памяти в настройках php / php.ini

Как выделить больше памяти для док-контейнера

0 голосов
/ 28 октября 2018

Использование задания более предпочтительно в этом случае, поскольку для вставки в пакет можно использовать порцию данных, и, как объяснил addi2113, следует использовать сеялку, если это для среды тестирования.

0 голосов
/ 28 октября 2018

я бы посоветовал сделать это в Job и запустить его в очереди redis.

, поэтому просто напишите простую команду, которая отправляет задание.Также я бы посоветовал вам записать данные в виде кусков, например, в 1000er:)

...