memocon プログラミングのメモや物欲日記、雑記等

mysql error:FUNCTION .FIELD does not existが特定環境だけ発生する

2013年01月13日 20時52分

とあるQueryがローカルでは問題なく動くのに本番環境だと動かないという症状に悩まされたのでメモ。

これがローカルだと動くのだが本番だと以下ようなのエラー文が出て通らない。

エラーメッセージをそのまま読むと.fieldという関数はありません?? しかしローカルだと動くしそんな最近増えた機能でもないはずなのになんでかなぁと思って調べてみたら関数の前に空白があるかないかが問題だった。

以下のようにFIELDの前を削除すると正常に動作した。

MySQLはsql_modeなどの設定で関数の前の空白を許可するかしないか等の細かい設定まで出来る。 結局は本番環境と開発環境の違いを把握しておきましょうというお話。

8.2.4. 関数名の構文解析と名前解決
http://dev.mysql.com/doc/refman/5.1/ja/function-resolution.html