Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Bei insert_batch() von Codeigniter mit Tausenden von Einfügungen fehlen Datensätze

insert_batch() versucht, genau Ihr Problem zu vermeiden - der Versuch, Daten einzufügen, die größer sind, als MySQL für die gleichzeitige Verarbeitung konfiguriert ist. Ich bin mir nicht sicher, ob MySQLs Option dafür max_allowed_packet war oder etwas anderes, aber das Problem dabei ist, dass es ein Limit in Bytes und nicht in einer Anzahl von Zeilen setzt.

Wenn Sie DB_active_rec.php, mysql_driver.php oder was auch immer passend bearbeiten ... versuchen Sie, diese 100-Zählung in for() zu ändern Schleife. 50 sollte eine sicherere Wahl sein.

Abgesehen davon, FYI - affected_rows() gibt nicht den korrekten Wert zurück, wenn Sie mehr als 100 Zeilen über insert_batch() einfügen , daher ist es nicht zuverlässig, es als Erfolgs-/Fehlerprüfung zu verwenden. Das liegt an insert_batch() fügt Ihre Daten um 100 Datensätze gleichzeitig ein, während affected_rows() würde nur Daten für die letzte Abfrage zurückgeben.