sql >> Database >  >> RDS >> Mysql

Codeigniter's insert_batch() met duizenden inserts heeft ontbrekende records

insert_batch() probeert precies uw probleem te vermijden - proberen gegevens in te voegen die groter zijn dan MySQL is geconfigureerd om tegelijk te verwerken. Ik weet niet zeker of MySQL's optie daarvoor max_allowed_packet was of iets anders, maar het probleem ermee is dat het een limiet in bytes instelt en niet in een aantal rijen.

Als je DB_active_rec.php, mysql_driver.php of wat dan ook gaat bewerken ... probeer die 100 telling te veranderen in de for() lus. 50 zou een veiligere keuze moeten zijn.

Anders dan dat, FYI - affected_rows() retourneert niet de juiste waarde als u meer dan 100 rijen invoegt via insert_batch() , dus het is niet betrouwbaar om het te gebruiken als een succes-/foutcontrole. Dat komt omdat insert_batch() voegt uw gegevens met 100 records tegelijk in, terwijl affected_rows() zou alleen gegevens voor de laatste zoekopdracht retourneren.



  1. Dynamische draaikolommen in SQL Server

  2. Strings splitsen:nu met minder T-SQL

  3. MySQL-standaardwaarde op basis van weergave

  4. Illegale mix van sorteringen (utf8mb4_unicode_ci,IMPLICIT) en (utf8mb4_general_ci,IMPLICIT) voor bewerking '='