Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Metoda insert_batch() Codeignitera z tysiącami wstawek zawiera brakujące rekordy

insert_batch() próbuje uniknąć dokładnie Twojego problemu - próbując wstawić dane większe niż MySQL skonfigurowany do przetwarzania na raz. Nie jestem pewien, czy opcją MySQL do tego było max_allowed_packet lub coś innego, ale problem polega na tym, że ustawia limit w bajtach, a nie w liczbie wierszy.

Jeśli będziesz edytować DB_active_rec.php, mysql_driver.php lub cokolwiek innego ... spróbuj zmienić liczbę 100 w for() pętla. 50 powinno być bezpieczniejszym wyborem.

Poza tym, FYI - affected_rows() nie zwróci prawidłowej wartości, jeśli wstawiasz więcej niż 100 wierszy za pomocą insert_batch() , więc używanie go jako sprawdzania sukcesu/błędu nie jest niezawodne. To dlatego, że insert_batch() wstawia dane po 100 rekordów na raz, podczas gdy affected_rows() zwróci dane tylko dla ostatniego zapytania.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Czy istnieje sposób na wsteczne tworzenie UUID opartego na czasie/węźle w PHP?

  2. Wyklucz niektóre wartości podczas dzielenia stałej wartości na kraje na podstawie dziennego udziału w przychodach

  3. Jak sprawić, by wiele LEFT JOIN z OR w pełni wykorzystywało indeks złożony? (część 2)

  4. Mysql czas Unii V.S. oddzielne zapytanie jeden po drugim

  5. Czym są zestawienia przygotowane po stronie klienta?