長いテキストのカスタムフィールドで文字列によってエラーになってしまう場合がある

522 views
Skip to first unread message

MA-NA

unread,
Sep 30, 2009, 10:01:53 PM9/30/09
to Redmine Users (japanese)
初投稿です。皆さんはじめまして。
Mysqlとrubyが初心者だけどRedmineを使用してみようとしているMA-NAです。

Redmineの使用を検討しているのですが、よく分からないエラーに遭遇してしまい
解決策を探しているところです。
何かご存知の事があれば、どなたかお知恵を貸して下さい。

--【環境】--
WindowsServer2003 R2 StanderdEdition
apache 2.2.13 + mongrel
ruby 1.86

--【事象】--
長いテキストのカスタムフィールドで文字列によってエラーで落ちてしまう。
カスタムフィールドではない「説明」「注記」で同じテキストを入力してもエラーにはならない。
※production.logの内容は長いので一番下に書きます。

入力した内容は・・・
【麻生首相年頭会見】「基本を忘れないで」(4日午前)(産経新聞)
 麻生太郎首相は4日午前、首相官邸で年頭の記者会見を行い、平成21年度予算案と関連法案が成立するまでは衆院
http://www6.big.or.jp/~beyond/akutoku/news/2009/0104-183.htmlの前首相の年頭会見
の内容です

--【その他】--
エラーログを見て特定の場合に上手く文字が処理できていない?と推測してます。
ただ、
・mysqlの文字コードを「show variables like 'character_set%'」で調べたら「utf8」です
・database.ymlの「encoding」も「utf8」です
という状態です。
カスタムフィールドでしか発生していないのが事実だとすると、カスタムフィールドの処理が
何か既存のフィールドと違ったりしている?

--【production.log】--
ActiveRecord::StatementInvalid (Mysql::Error: #HY000Incorrect string
value: '\xE9' for column 'old_value' at row 1: INSERT INTO
`journal_details` (`property`, `old_value`, `value`, `journal_id`,
`prop_key`) VALUES('cf', '【麻生首相年頭会見】「基本を忘れないで」(4日午前)(産経新聞)\r\n 麻生太郎首相は4
日午前、首相官邸で年頭の記者会見を行い、平成21年度予算案と関連法案が成立するまでは衆・, ' ', 68, 3)):
/vendor/rails/activerecord/lib/active_record/connection_adapters/
abstract_adapter.rb:147:in `log'
/vendor/rails/activerecord/lib/active_record/connection_adapters/
mysql_adapter.rb:302:in `execute'
/vendor/rails/activerecord/lib/active_record/connection_adapters/
abstract/database_statements.rb:161:in `insert_sql'
/vendor/rails/activerecord/lib/active_record/connection_adapters/
mysql_adapter.rb:312:in `insert_sql'
/vendor/rails/activerecord/lib/active_record/connection_adapters/
abstract/database_statements.rb:44:in `insert_without_query_dirty'
/vendor/rails/activerecord/lib/active_record/connection_adapters/
abstract/query_cache.rb:19:in `insert'
/vendor/rails/activerecord/lib/active_record/base.rb:2517:in
`create_without_callbacks'
/vendor/rails/activerecord/lib/active_record/callbacks.rb:220:in
`create_without_timestamps'
/vendor/rails/activerecord/lib/active_record/timestamp.rb:29:in
`create'
/vendor/rails/activerecord/lib/active_record/base.rb:2483:in
`create_or_update_without_callbacks'
/vendor/rails/activerecord/lib/active_record/callbacks.rb:207:in
`create_or_update'
/vendor/rails/activerecord/lib/active_record/base.rb:2211:in
`save_without_validation'
/vendor/rails/activerecord/lib/active_record/validations.rb:911:in
`save_without_dirty'
/vendor/rails/activerecord/lib/active_record/dirty.rb:75:in
`save_without_transactions'
/vendor/rails/activerecord/lib/active_record/transactions.rb:
106:in `save'
/vendor/rails/activerecord/lib/active_record/connection_adapters/
abstract/database_statements.rb:66:in `transaction'
/vendor/rails/activerecord/lib/active_record/transactions.rb:79:in
`transaction'
/vendor/rails/activerecord/lib/active_record/transactions.rb:98:in
`transaction'
/vendor/rails/activerecord/lib/active_record/transactions.rb:
106:in `save'
/vendor/rails/activerecord/lib/active_record/transactions.rb:
118:in `rollback_active_record_state!'
/vendor/rails/activerecord/lib/active_record/transactions.rb:
106:in `save'
/vendor/rails/activerecord/lib/active_record/associations/
has_many_association.rb:62:in `insert_record'
/vendor/rails/activerecord/lib/active_record/associations.rb:
1225:in `send'
/vendor/rails/activerecord/lib/active_record/associations.rb:
1225:in `after_create_or_update_associated_records_for_details'
/vendor/rails/activerecord/lib/active_record/associations/
association_collection.rb:277:in `method_missing'
/vendor/rails/activerecord/lib/active_record/associations/
association_proxy.rb:171:in `method_missing'
/vendor/rails/activerecord/lib/active_record/associations/
association_proxy.rb:171:in `each'
/vendor/rails/activerecord/lib/active_record/associations/
association_proxy.rb:171:in `send'
/vendor/rails/activerecord/lib/active_record/associations/
association_proxy.rb:171:in `method_missing'
/vendor/rails/activerecord/lib/active_record/associations/
association_collection.rb:277:in `method_missing'
/vendor/rails/activerecord/lib/active_record/associations.rb:
1225:in `after_create_or_update_associated_records_for_details'
/vendor/rails/activesupport/lib/active_support/callbacks.rb:173:in
`send'
/vendor/rails/activesupport/lib/active_support/callbacks.rb:173:in
`evaluate_method'
/vendor/rails/activesupport/lib/active_support/callbacks.rb:161:in
`call'
/vendor/rails/activesupport/lib/active_support/callbacks.rb:93:in
`run'
/vendor/rails/activesupport/lib/active_support/callbacks.rb:92:in
`each'
/vendor/rails/activesupport/lib/active_support/callbacks.rb:92:in
`send'
/vendor/rails/activesupport/lib/active_support/callbacks.rb:92:in
`run'
/vendor/rails/activesupport/lib/active_support/callbacks.rb:272:in
`run_callbacks'
/vendor/rails/activerecord/lib/active_record/callbacks.rb:298:in
`callback'
/vendor/rails/activerecord/lib/active_record/callbacks.rb:221:in
`create_without_timestamps'
/vendor/rails/activerecord/lib/active_record/timestamp.rb:29:in
`create'
/vendor/rails/activerecord/lib/active_record/base.rb:2483:in
`create_or_update_without_callbacks'
/vendor/rails/activerecord/lib/active_record/callbacks.rb:207:in
`create_or_update'
/vendor/rails/activerecord/lib/active_record/base.rb:2211:in
`save_without_validation'
/vendor/rails/activerecord/lib/active_record/validations.rb:911:in
`save_without_dirty'
/vendor/rails/activerecord/lib/active_record/dirty.rb:75:in
`save_without_transactions'
/vendor/rails/activerecord/lib/active_record/transactions.rb:
106:in `save'
/vendor/rails/activerecord/lib/active_record/connection_adapters/
abstract/database_statements.rb:66:in `transaction'
/vendor/rails/activerecord/lib/active_record/transactions.rb:79:in
`transaction'
/vendor/rails/activerecord/lib/active_record/transactions.rb:98:in
`transaction'
/vendor/rails/activerecord/lib/active_record/transactions.rb:
106:in `save'
/vendor/rails/activerecord/lib/active_record/transactions.rb:
118:in `rollback_active_record_state!'
/vendor/rails/activerecord/lib/active_record/transactions.rb:
106:in `save'
/app/models/journal.rb:43:in `save'
/app/models/issue.rb:155:in `before_save'
/vendor/rails/activerecord/lib/active_record/callbacks.rb:301:in
`send'
/vendor/rails/activerecord/lib/active_record/callbacks.rb:301:in
`callback'
/vendor/rails/activerecord/lib/active_record/callbacks.rb:206:in
`create_or_update'
/vendor/rails/activerecord/lib/active_record/base.rb:2211:in
`save_without_validation'
/vendor/rails/activerecord/lib/active_record/validations.rb:911:in
`save_without_dirty'
/vendor/rails/activerecord/lib/active_record/dirty.rb:75:in
`save_without_transactions'
/vendor/rails/activerecord/lib/active_record/transactions.rb:
106:in `save'
/vendor/rails/activerecord/lib/active_record/connection_adapters/
abstract/database_statements.rb:66:in `transaction'
/vendor/rails/activerecord/lib/active_record/transactions.rb:79:in
`transaction'
/vendor/rails/activerecord/lib/active_record/transactions.rb:98:in
`transaction'
/vendor/rails/activerecord/lib/active_record/transactions.rb:
106:in `save'
/vendor/rails/activerecord/lib/active_record/transactions.rb:
118:in `rollback_active_record_state!'
/vendor/rails/activerecord/lib/active_record/transactions.rb:
106:in `save'
/app/controllers/issues_controller.rb:187:in `edit'
/vendor/rails/actionpack/lib/action_controller/base.rb:1166:in
`send'
/vendor/rails/actionpack/lib/action_controller/base.rb:1166:in
`perform_action_without_filters'
/vendor/rails/actionpack/lib/action_controller/filters.rb:579:in
`call_filters'
/vendor/rails/actionpack/lib/action_controller/filters.rb:572:in
`perform_action_without_benchmark'
/vendor/rails/actionpack/lib/action_controller/benchmarking.rb:
68:in `perform_action_without_rescue'
d:/ruby/lib/ruby/1.8/benchmark.rb:293:in `measure'
/vendor/rails/actionpack/lib/action_controller/benchmarking.rb:
68:in `perform_action_without_rescue'
/vendor/rails/actionpack/lib/action_controller/rescue.rb:201:in
`perform_action_without_caching'
/vendor/rails/actionpack/lib/action_controller/caching/
sql_cache.rb:13:in `perform_action'
/vendor/rails/activerecord/lib/active_record/connection_adapters/
abstract/query_cache.rb:33:in `cache'
/vendor/rails/activerecord/lib/active_record/query_cache.rb:8:in
`cache'
/vendor/rails/actionpack/lib/action_controller/caching/
sql_cache.rb:12:in `perform_action'
/vendor/rails/actionpack/lib/action_controller/base.rb:529:in
`send'
/vendor/rails/actionpack/lib/action_controller/base.rb:529:in
`process_without_filters'
/vendor/rails/actionpack/lib/action_controller/filters.rb:568:in
`process_without_session_management_support'
/vendor/rails/actionpack/lib/action_controller/
session_management.rb:130:in `process'
/vendor/rails/actionpack/lib/action_controller/base.rb:389:in
`process'
/vendor/rails/actionpack/lib/action_controller/dispatcher.rb:
149:in `handle_request'
/vendor/rails/actionpack/lib/action_controller/dispatcher.rb:
107:in `dispatch'
/vendor/rails/actionpack/lib/action_controller/dispatcher.rb:
104:in `synchronize'
/vendor/rails/actionpack/lib/action_controller/dispatcher.rb:
104:in `dispatch'
/vendor/rails/actionpack/lib/action_controller/dispatcher.rb:
120:in `dispatch_cgi'
/vendor/rails/actionpack/lib/action_controller/dispatcher.rb:35:in
`dispatch'
d:/ruby/lib/ruby/gems/1.8/gems/mongrel-1.1.5-x86-mingw32/bin/../
lib/mongrel/rails.rb:76:in `process'
d:/ruby/lib/ruby/gems/1.8/gems/mongrel-1.1.5-x86-mingw32/bin/../
lib/mongrel/rails.rb:74:in `synchronize'
d:/ruby/lib/ruby/gems/1.8/gems/mongrel-1.1.5-x86-mingw32/bin/../
lib/mongrel/rails.rb:74:in `process'
d:/ruby/lib/ruby/gems/1.8/gems/mongrel-1.1.5-x86-mingw32/bin/../
lib/mongrel.rb:159:in `process_client'
d:/ruby/lib/ruby/gems/1.8/gems/mongrel-1.1.5-x86-mingw32/bin/../
lib/mongrel.rb:158:in `each'
d:/ruby/lib/ruby/gems/1.8/gems/mongrel-1.1.5-x86-mingw32/bin/../
lib/mongrel.rb:158:in `process_client'
d:/ruby/lib/ruby/gems/1.8/gems/mongrel-1.1.5-x86-mingw32/bin/../
lib/mongrel.rb:285:in `run'
d:/ruby/lib/ruby/gems/1.8/gems/mongrel-1.1.5-x86-mingw32/bin/../
lib/mongrel.rb:285:in `initialize'
d:/ruby/lib/ruby/gems/1.8/gems/mongrel-1.1.5-x86-mingw32/bin/../
lib/mongrel.rb:285:in `new'
d:/ruby/lib/ruby/gems/1.8/gems/mongrel-1.1.5-x86-mingw32/bin/../
lib/mongrel.rb:285:in `run'
d:/ruby/lib/ruby/gems/1.8/gems/mongrel-1.1.5-x86-mingw32/bin/../
lib/mongrel.rb:268:in `initialize'
d:/ruby/lib/ruby/gems/1.8/gems/mongrel-1.1.5-x86-mingw32/bin/../
lib/mongrel.rb:268:in `new'
d:/ruby/lib/ruby/gems/1.8/gems/mongrel-1.1.5-x86-mingw32/bin/../
lib/mongrel.rb:268:in `run'
d:/ruby/lib/ruby/gems/1.8/gems/mongrel-1.1.5-x86-mingw32/bin/../
lib/mongrel/configurator.rb:282:in `run'
d:/ruby/lib/ruby/gems/1.8/gems/mongrel-1.1.5-x86-mingw32/bin/../
lib/mongrel/configurator.rb:281:in `each'
d:/ruby/lib/ruby/gems/1.8/gems/mongrel-1.1.5-x86-mingw32/bin/../
lib/mongrel/configurator.rb:281:in `run'
d:/ruby/lib/ruby/gems/1.8/gems/mongrel-1.1.5-x86-mingw32/bin/
mongrel_rails:128:in `run'
d:/ruby/lib/ruby/gems/1.8/gems/mongrel-1.1.5-x86-mingw32/bin/../
lib/mongrel/command.rb:212:in `run'
d:/ruby/lib/ruby/gems/1.8/gems/mongrel-1.1.5-x86-mingw32/bin/
mongrel_rails:281
d:/ruby/bin/mongrel_rails:16:in `load'
d:/ruby/bin/mongrel_rails:16

Rendering d:/redmine/public/500.html (500 Internal Server Error)


初投稿でいきなり長文で申し訳ありませんが、何かご存知の方お知恵を貸して下さい。

avalanche

unread,
Oct 5, 2009, 10:43:21 PM10/5/09
to Redmine Users (japanese)
はじめまして。

ソースを弄る時間が無いので、コメントだけ・・・。
ジャーナルの更新で死んでいますが、この現象はカスタムフィールドの255バイト目に
マルチバイト文字(日本語など)があると問題を引き起こすようです。
→ マルチバイト文字でも255バイト目が文字コードの最終バイトなら問題ありません。

従って、登録時に上手い事、加工する事ができれば防げると思います。
本家にもレポートがあって良さそうなバグですね。

MA-NA

unread,
Oct 8, 2009, 11:42:23 PM10/8/09
to Redmine Users (japanese)
avalancheさん

お返事が遅れてすみません。MA-NAです。

回答ありがとうございます。
ドタバタしていて試せていないのですが、もう少し落ち着いたら実験してコードをいじってみようと思います。

確かに本家にも・・・なんか投稿した方がいいバグですね。。。
他にも困ってる人いそうですし。
> ...
>
> もっと読む ≫- 引用テキストを表示しない -
>
> - 引用テキストを表示 -
Reply all
Reply to author
Forward
0 new messages