sql >> Databasteknik >  >> RDS >> Mysql

Tillåten minnesstorlek på 134217728 byte är slut (försökte allokera 4294967296 byte)

Jag läste denna felrapport här:https://bugs.php.net/bug. php?id=51386

Ditt problem verkar hända eftersom det finns en longblob eller longtext i tabellens kolumner.

longtext / longblob har en maximal längd på 4294967295 [4GB] det är därför mysqli försöker allokera det minnet för bufferten för att vara säker på att inget går förlorat. Jag skulle föreslå att du använder mediumtext (16777215 [16MB] max längd), det borde räcka till allt vanligtvis.

Uppdatering: Eftersom det här svaret har sett en del aktivitet lägger jag till den här lösningen från Phil_1984 (se kommentarer)

=> Om du använder $stmt->store_result() du kan använda mysqli med longblob / longtext utan att få felet.

-

Gammalt svar: Jag föreslår att du antingen ändrar kolumnen till en annan typ (mediumtext) eller använder PDO (jag tror att den inte har det problemet). men om du vill behålla kolumnen som långtext måste du byta ditt mysql-bibliotek

Citat från PHP Dev:



  1. Hämta en lista över privata procedurer/funktioner från en paketkropp

  2. Använda Like på en parametervariabel?

  3. Kan jag sätta ignore_dup_key på för en primärnyckel?

  4. MySQL hämta array lägger till dubbla värden?