先に結論書きますと、開発と本番の環境は極力合わせた方が良い事に尽きます。
Windows上で単体検証まで完了し、Linux(AWS)にソースをデプロイするも特定機能が動作せず。
調べてみるとDB処理に不具合があり、ログ上にはテーブルが存在しない旨が出力されていました。
RDS上で確かにテーブル作られてるし、向き先やポート番号等なども間違いない。
色々試行錯誤してMySQL周りの設定にハマっていたことに気付きました。
lower_case_table_names
MySQLではlower_case_table_namesという設定パラメータがあります。
これはテーブル名の大文字小文字を区別するかどうかの設定を行うものです。
以下ブログが詳細を書いてくれてますが、どうやらWindowsはデフォルト1が設定。
この状態ではSQL文でテーブル名を大文字にしても、作られるテーブルは小文字に丸められます。
MySQL の lower_case_table_namesについて,テーブル名とデータベース名の中の大文字小文字について
ちなみに現場のLinux環境は設定値が1ではなく、SQL通りに大文字でテーブルが作られていたので、Linux環境にデプロイすると急に動かなくなっていたようです。
マニアックな設定周りで変な時間を取られない為に、単一プラットフォーム上での開発に統一すればよいのですが、まだまだ現場によってはWindows派が多かったりします。
各々で気をつけるしかないですね。
あれ!? MySQLの設定値が反映されない
原因がMySQLであることが分かったので、試しにローカル環境で設定を変更して、本当に大文字でテーブルが作られるか確認しようとするも、MySQL再起動しても何故か設定反映されず(涙)
結果から言いますと、Windows Vista以降に導入されたVirtualStoreの仕組みに今更躓いてました。
ファイルに対して書き込み権限が無いと、エラーを出す代わりに以下にファイルを書き出す仕様らしい。
C:\Users\ユーザ名\AppData\Local\VirtualStore
今回慣れないwindows10での作業(管理者権限でない)でしたが、Windows7(管理者権限での作業)は使い慣れていたので、まさかこんな問題に直面するなんて思いもせず、完全にスルーしてましたね(反省)
C:\Users\ユーザ名\AppData\Local\VirtualStore配下に作られたファイルを正規の場所に置こうとすると、アラートが出ますがOKボタン押して再起動すると無事に反映されました。
lower_case_table_namesを2にするとSQL通りに大文字で作られ無事解決。