■
Rails(2.3.8)のデータベースをSQLiteからMySQL(5.0)に変更したら以下のエラーが出た。
Mysql::Error: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'key = 123456) LIMIT 1' at line 1:
該当のコード。
Groups.find(:first, :conditions => ["key = ?", 123456]) # これでエラー。Groupsはテーブル名、keyはカラム名。
発行されたSQL文。
SELECT * FROM `groups` WHERE (key = 123456) LIMIT 1; /* エラー */
試しに以下のように書いたら問題なかったので、いろいろ悩んだ。
Group.find(:first, :conditions => {'key' => 123456}) #
SELECT * FROM `groups` WHERE (`groups`.`key` = 123456) LIMIT 1;
原因は、MySQLでは"key"は予約語だということだった。
MySQLでの予約語の扱い
カラム名を変更しようか、:conditionsの書き方を変更しようか…。