web-dev-qa-db-fra.com

JDatabaseDriver-> replacePrefix () Taille de mémoire autorisée de ... octets épuisés

Signalé via le numéro de Tracker Item # 33711

Lorsque vous essayez d'insérer un BLOB> 3 Mo dans la base de données, l'erreur suivante se produit:

Erreur irrécupérable: taille de mémoire autorisée de 134217728 octets épuisés (tentative d'allocation de 4252768 octets) dans ...\libraries\joomla\database\driver.php à la ligne 1638

Pourquoi JDatabaseDriver->replacePrefix( ) consomme-t-il tant de mémoire?

5
Valentin Despa

Il n'y a fondamentalement rien de mal avec replacePrefix().

En réalité, vous envoyez à MySQL une chaîne trop grande pour un paramètre prédéfini (max_allowed_packet) Et signalez l'erreur MySQL server has gone away, Comme expliqué dans Le serveur MySQL a disparu empêchant l'importation d'importants dumps.

Maintenant, Joomla pense qu'il ne s'agit que d'une erreur temporaire et réessaie la requête en réexécutant la méthode execute() encore et encore, jusqu'à épuisement de la mémoire.

La solution à ce problème consiste à augmenter la valeur de max_allowed_packet Sous [mysqld] Dans my.ini.

6
Valentin Despa