Mysql
 sql >> Base de données >  >> RDS >> Mysql

Insert_batch() de Codeigniter avec des milliers d'insertions a des enregistrements manquants

insert_batch() essaie d'éviter exactement votre problème - en essayant d'insérer des données plus volumineuses que MySQL n'est configuré pour traiter à la fois. Je ne sais pas si l'option de MySQL pour cela était max_allowed_packet ou autre chose, mais le problème est qu'il fixe une limite en octets et non un nombre de lignes.

Si vous allez éditer DB_active_rec.php, mysql_driver.php ou tout ce qui est approprié ... essayez de changer ce nombre de 100 dans le for() boucle. 50 devrait être un choix plus sûr.

Autre que cela, FYI - affected_rows() ne renverra pas la valeur correcte si vous insérez plus de 100 lignes via insert_batch() , il n'est donc pas fiable de l'utiliser comme test de réussite/d'erreur. C'est parce que insert_batch() insère vos données par 100 enregistrements à la fois, tandis que affected_rows() renverrait uniquement les données de la dernière requête.