- 更新日: 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)

 画像付き英語辞書 Imagict | 英単語をイメージで暗記
画像付き英語辞書 Imagict | 英単語をイメージで暗記









Leave Your Message!