У меня довольно большой поток товаров, который я разделил на несколько CSV-файлов по 20 тыс. Строк.
feed-0.csv
feed-1.csv
etc
Я загружаю этот CSV-файл во временную таблицу и экспортирую 3 новых CSV-файла, которые я позже опишузагрузить в отдельные таблицы.
products.csv
attributes.csv
prices.csv
Выше, конечно, также есть 20 тыс. строк, как (разделенный) источник, пока все хорошо, все идет хорошо.
Другая часть скрипта загружаетсявыше 3 CSV-файлов в соответствующие таблицы, db.products, db.attributes и db.prices.Когда я выбираю 1 файл (будь то feed-0.csv или feed-9.csv, подойдет любой разделенный файл), база данных обновляется 20k строками в каждой соответствующей таблице.Там все еще нет проблем.
Теперь я создаю цикл, в котором я зацикливаюсь на разделенных CSV-файлах и добавляю по 20 000 строк в каждую таблицу в каждом цикле.
Это работает хорошо, пока я не достигну 3-го цикла,тогда я получу несовпадающие числа в базе данных.например,
db.products - 57569 rows
db.attributes - 58661 rows
db.prices - 52254 rows
Итак, если на предыдущем все было 40 КБ, то теперь у меня есть несовпадающие числа.Я проверил products.csv, attribute.csv и Prices.csv в каждом цикле, и у каждого из них по 20 Кб, как и должно быть.
Я пробовал использовать случайные сплит-каналы, например feed-1.csv., feed-5.csv, feed-7.csv или feed-1.csv, feed-8.csv и feed-3.csv.Таким образом, я изменил файлы, я изменил порядок, но каждый раз на 3-м и последующих циклах я получаю эту проблему.
Я тоже пытался импортировать разделенные файлы из разных каналов, но каждый раз в 3-м цикле я получаю неправильные номера.Исходные файлы должны быть хорошими.Когда я запускаю только 1 или 2 файла в любой последовательности, результатом являются товары.
Я подозреваю, что где-то наложил какие-то ограничения.Я подумал, что это может быть проблема с буфером innodb, поэтому я перезапустил сервер, но проблема остается.(Буфер innodb примерно на 25% после 3-го цикла)
Я использую MariaDB 10.1.38, PHP версии 7.3.3, размер буфера innodb 500 МБ
Любые указатели в каком направлении я должен искатьдля решения будет приветствоваться!