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の書き方を変更しようか…。