- 更新日: 2014年4月9日
- Rails
ActiveRecord::StatementInvalid: Mysql2::Error: Incorrect string value
スポンサーリンク
Rails で新しくマイグレートファイルを作成してマイグレーション後に、rake タスクで開発用のサンプルデータをDBに流し込もうとしたら表題のエラーが発生しました。
【お知らせ】 英単語を画像イメージで楽に暗記できる辞書サイトを作りました。英語学習中の方は、ぜひご利用ください!
スポンサーリンク
— 環境 —
rails 4.0.1
DB は utf8_general_ci に設定してあった
Stackoverflow で探したところ、データベースで utf8_general_ci を使えというアドバイス。
1 2 3 4 5 6 7 8 9 10 11 12 13 |
mysql> show table status; ... mysql> show variables like '%collation%'; +----------------------+-----------------+ | Variable_name | Value | +----------------------+-----------------+ | collation_connection | utf8_general_ci | | collation_database | utf8_general_ci | | collation_server | utf8_general_ci | +----------------------+-----------------+ |
確認したところ、テーブルでも variables でも上記のように utf8_general_ci を使っていました。
マイグレートで t.string → t.binary に変更
ここで詰まってしまい少々はまったんだけど、ググりまくり情報を発見。
Bug #18411: Delayed jobs problems since upgrade to 1.2.17 – Puppet Dashboard – Puppet Labs
カラムを string から blob に変更すれば良いらしい。ということで、マイグレートファイルを以下のように変更してマイグレートやり直し。
1 2 3 4 5 6 7 8 9 10 |
class CreateSomeTable < ActiveRecord::Migration def change create_table :some_table do |t| t.binary :comment ... t.timestamps end end end |
もともと t.string に指定していたカラムを、t.binary に変更しました。これで無事にサンプルデータを流し込めた。
スポンサーリンク
パーフェクト Ruby on Rails は、最近読んだ Rails 本の中では一番役に立った本です。Chef や Capistrano など Rails と共によく使用される技術にも触れてあります。Ruby on Rails 4 アプリケーションプログラミングは、入門的な内容で Rails の機能全体を網羅されています。
<< 前の記事 : rake タスクの中で他の rake タスクを実行する
- Rails の関連記事
- RailsでMySQLパーティショニングのマイグレーション
- Rails ActiveRecordでdatetime型カラムのGROUP BY集計にタイムゾーンを考慮する
- RailsプラグインGemの作成方法、RSpecテストまで含めたrails pluginの作り方
- RailsでAMPに対応するgemをリリースしました
- Railsでrequest.urlとrequest.original_urlの違い
- Railsでwheneverによるcronバッチ処理
- Google AnalyticsのRails Turbolinks対応
- Railsアプリにソーシャル・シェアボタンを簡単設置
- Rails監視ツール用にErrbitをHerokuで運用
- Facebook APIバージョンのアップグレード手順(Rails OmniAuth)
Leave Your Message!