現時点では Linux 実稼働サーバーにのみデプロイされている既存のアプリケーションに変更を加えるよう依頼されました。私は先に進み、アプリの大部分をローカルの Windows PC で動作させました。MySQL
ローカル PC にインストールされたプロダクションからの DB の完全なコピーがあります。本番 DB はMySQL v5.0.95
Linux 上にあり、私のローカル DB はMySQL v5.5
Windows 上にあります。どちらも InnoDB モードです。
私の問題は、次のようなステートメントです。助けたいと思っている他の人が使いやすいように一般化されています。
update atable
set adate=DATE_ADD(str_to_date('','%m/%d/%Y'), INTERVAL 0 DAY)
where anum='1'
場合によっては、空の文字列が渡され、本番環境では問題が発生せず、レコードを保存/更新できますが、ローカルではSQLException
. SQL
そのため、ローカル DB に対してステートメントを直接試してみましたが、どちらの場合も次のエラー メッセージが表示されます。
エラー コード: 1411。日時の値が正しくありません: 関数 str_to_date の ''
プロダクションmy.cnf
とローカルmy.ini
を調べて大きな違いを探しました。また、ローカルで SQL モード " ALLOW_INVALID_DATES
" を使用しようとしましたが、最終結果は変わりませんでした。
これらの空の文字列を渡さないようにコードを変更できることはわかっていますが、このようなステートメントはたくさんあります。現時点では、可能であればこれらすべてを変更したくありません。この顧客の予算と時間枠は限られており、私は彼らの新しい要件に集中したいと考えています。可能であれば、本番環境と同じようにローカル環境を機能させる方法についての情報を探しています。
御時間ありがとうございます。