2008-10-02 3 views
0

я получаю сообщение об ошибке MySQL:Ошибка Обновление записи

автообновление (ActiveRecord :: StatementInvalid) «Mysql :: Error: # HY000Got ошибка 139 от двигателя хранения:

При попытке обновить текстовое поле на запись со строкой длины 1429 символов, любые идеи о том, как отследить проблему?

Ниже 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' 
+0

Каков тип столбца, который вы пытаетесь обновить? – mwilliams 2008-10-02 17:28:09

+0

Да, я бы, скорее всего, помог бы немного подробнее! – 2008-10-02 18:44:20

ответ

0

Возможно, это эта ошибка: #1030 - Got error 139 from storage engine, но это поможет, если вы разместите запрос, который должен появиться сразу после сообщения об ошибке.

0

Это казалось очень странной ошибкой mysql, где текст усекался до 256 символов (для текстового типа) и выбрасывал указанную выше ошибку: строка была 1000 символов или более. изменение столбца таблицы, чтобы текст снова исправил проблему, или он просто исправил ее самостоятельно. Я все еще не уверен.

Update: Изменение типа таблицы в MyISAM устранил эту проблему

1

Когда вы говорите, текстовое поле, это тип VARCHAR или TEXT?

Если его первый, вы не можете сохранить строку в размере более 255 символов (возможно, меньше с служебными данными UTF-8) в этом столбце. Если это последнее, вам лучше разместить определение схемы, чтобы люди могли помочь вам дальше.

Смежные вопросы