mysql error:FUNCTION .FIELD does not existが特定環境だけ発生する
2013年01月13日 20時52分
とあるQueryがローカルでは問題なく動くのに本番環境だと動かないという症状に悩まされたのでメモ。
1 2 3 4 |
SELECT 1 ORDER BY FIELD (1, 1) |
これがローカルだと動くのだが本番だと以下ようなのエラー文が出て通らない。
1 |
FUNCTION .field does not exist |
エラーメッセージをそのまま読むと.fieldという関数はありません?? しかしローカルだと動くしそんな最近増えた機能でもないはずなのになんでかなぁと思って調べてみたら関数の前に空白があるかないかが問題だった。
以下のようにFIELDの前を削除すると正常に動作した。
1 2 3 4 |
SELECT 1 ORDER BY FIELD(1, 1) |
MySQLはsql_modeなどの設定で関数の前の空白を許可するかしないか等の細かい設定まで出来る。 結局は本番環境と開発環境の違いを把握しておきましょうというお話。
8.2.4. 関数名の構文解析と名前解決
http://dev.mysql.com/doc/refman/5.1/ja/function-resolution.html