sql >> Databáze >  >> RDS >> Mysql

Inzert_batch() Codeigniter s tisíci vloženími má chybějící záznamy

insert_batch() se snaží vyhnout přesně vašemu problému - snaží se vložit data větší, než je nakonfigurováno pro zpracování MySQL najednou. Nejsem si jistý, zda možnost MySQL pro to byla max_allowed_packet nebo něco jiného, ​​ale problém je v tom, že nastavuje limit v bajtech a ne v počtu řádků.

Pokud budete upravovat DB_active_rec.php, mysql_driver.php nebo cokoli jiného, ​​zkuste změnit tento počet 100 v for() smyčka. 50 by měla být bezpečnější volba.

Kromě toho, FYI - affected_rows() nevrátí správnou hodnotu, pokud vkládáte více než 100 řádků pomocí insert_batch() , takže není spolehlivé jej použít jako kontrolu úspěchu/chyby. Je to proto, že insert_batch() vloží vaše data po 100 záznamech najednou, zatímco affected_rows() vrátí data pouze pro poslední dotaz.



  1. Chyba MultiThreading:K tomuto připojení je již přidružen otevřený DataReader, který je třeba nejprve zavřít

  2. Práce s velkým množstvím dat z mysql

  3. Formát čísla na zkrácené číslo

  4. Přidejte vztah cizího klíče mezi dvě databáze