Question

Je reçois une erreur mysql:

#update (ActiveRecord :: StatementInvalid) & "Mysql :: Error: # HY000Got erreur 139 du moteur de stockage:

Lorsque vous essayez de mettre à jour un champ de texte sur un enregistrement avec une chaîne de 1429 caractères, avez-vous une idée sur la façon de dépister le problème?

Ci-dessous, le stacktrace.

from /var/www/releases/20081002155111/vendor/rails/activerecord/lib/active_record/connection_adapters/abstract_adapter.rb:147:in `log'
from /var/www/releases/20081002155111/vendor/rails/activerecord/lib/active_record/connection_adapters/mysql_adapter.rb:299:in `execute'
from /var/www/releases/20081002155111/vendor/rails/activerecord/lib/active_record/connection_adapters/abstract/database_statements.rb:167:in `update_sql'
from /var/www/releases/20081002155111/vendor/rails/activerecord/lib/active_record/connection_adapters/mysql_adapter.rb:314:in `update_sql'
from /var/www/releases/20081002155111/vendor/rails/activerecord/lib/active_record/connection_adapters/abstract/database_statements.rb:49:in `update_without_query_dirty'
from /var/www/releases/20081002155111/vendor/rails/activerecord/lib/active_record/connection_adapters/abstract/query_cache.rb:19:in `update'
from /var/www/releases/20081002155111/vendor/rails/activerecord/lib/active_record/base.rb:2481:in `update_without_lock'
from /var/www/releases/20081002155111/vendor/rails/activerecord/lib/active_record/locking/optimistic.rb:70:in `update_without_dirty'
from /var/www/releases/20081002155111/vendor/rails/activerecord/lib/active_record/dirty.rb:137:in `update_without_callbacks'
from /var/www/releases/20081002155111/vendor/rails/activerecord/lib/active_record/callbacks.rb:234:in `update_without_timestamps'
from /var/www/releases/20081002155111/vendor/rails/activerecord/lib/active_record/timestamp.rb:38:in `update'
from /var/www/releases/20081002155111/vendor/rails/activerecord/lib/active_record/base.rb:2472:in `create_or_update_without_callbacks'
from /var/www/releases/20081002155111/vendor/rails/activerecord/lib/active_record/callbacks.rb:207:in `create_or_update'
from /var/www/releases/20081002155111/vendor/rails/activerecord/lib/active_record/base.rb:2200:in `save_without_validation'
from /var/www/releases/20081002155111/vendor/rails/activerecord/lib/active_record/validations.rb:901:in `save_without_dirty'
from /var/www/releases/20081002155111/vendor/rails/activerecord/lib/active_record/dirty.rb:75:in `save_without_transactions'
from /var/www/releases/20081002155111/vendor/rails/activerecord/lib/active_record/transactions.rb:106:in `save'
from /var/www/releases/20081002155111/vendor/rails/activerecord/lib/active_record/connection_adapters/abstract/database_statements.rb:66:in `transaction'
from /var/www/releases/20081002155111/vendor/rails/activerecord/lib/active_record/transactions.rb:79:in `transaction'
from /var/www/releases/20081002155111/vendor/rails/activerecord/lib/active_record/transactions.rb:98:in `transaction'
from /var/www/releases/20081002155111/vendor/rails/activerecord/lib/active_record/transactions.rb:106:in `save'
from /var/www/releases/20081002155111/vendor/rails/activerecord/lib/active_record/transactions.rb:118:in `rollback_active_record_state!'
from /var/www/releases/20081002155111/vendor/rails/activerecord/lib/active_record/transactions.rb:106:in `save'
Était-ce utile?

La solution

C’est peut-être ce bogue: # 1030 - Erreur 139 reçue du moteur de stockage , mais cela aiderait si vous postez la requête qui devrait venir directement après le message d'erreur.

Autres conseils

Lorsque vous dites un champ de texte, s'agit-il de type VARCHAR ou TEXT?

S'il s'agit de la première, vous ne pouvez pas stocker une chaîne de plus de 255 caractères (éventuellement moins avec la surcharge UTF-8) dans cette colonne. Si c'est le dernier cas, vous feriez mieux de publier votre définition de schéma pour que les gens puissent vous aider davantage.

Cela semblait être une erreur très étrange avec mysql, où le texte était tronqué à 256 caractères (pour un type de texte) et renvoyant l'erreur ci-dessus si la chaîne contenait 1 000 caractères ou plus. la modification de la colonne de la table pour qu’elle redevienne du texte a corrigé le problème, ou simplement elle-même corrigée. Je ne suis toujours pas sûr.

Mise à jour: Changer le type de table en MyISAM a résolu ce problème

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top