Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Insert_batch() do Codeigniter com milhares de inserções tem registros ausentes


insert_batch() tenta evitar exatamente o seu problema - tentar inserir dados maiores do que o MySQL está configurado para processar de cada vez. Não tenho certeza se a opção do MySQL para isso foi max_allowed_packet ou qualquer outra coisa, mas o problema é que ele define um limite em bytes e não em um número de linhas.

Se você estiver editando DB_active_rec.php, mysql_driver.php ou o que for apropriado ... tente alterar essa contagem de 100 no for() ciclo. 50 deve ser uma escolha mais segura.

Fora isso, FYI - affected_rows() não retornará o valor correto se você estiver inserindo mais de 100 linhas via insert_batch() , portanto, não é confiável usá-lo como uma verificação de sucesso/erro. Isso porque insert_batch() insere seus dados em 100 registros por vez, enquanto affected_rows() retornaria apenas os dados da última consulta.