win環境では、テーブル名などの大文字小文字が区別されないので、
dumpコマンドでwinからダンプすると、テーブル名が全て小文字で出力されてしまいます。(以下参考画像)
ちなみに、変数名はちゃんと大文字小文字区別して出力されます。(以下参考画像)
そこで、このままLinuxのDBにリストアすると、もちろん小文字のまま挿入されるわけで、
WEBアプリで大文字小文字を区別して実装していた場合に不整合でエラーになってしまいます。
もちろんLinux→winは問題なし。
そこで、解決法。
① ダンプファイルをテキストエディタ等で開いて、直接テーブル名を修正する。
② Linux側のMySQLの設定で、大文字小文字の区別を無くす(win環境と同じにする)
③ Win環境のMySQLの設定を、大文字小文字の区別をするようにし、ダンプ時に最初から区別されたデータを出力するようにする。ちなみに、
③は未検証。というか、できるかどうかも不明w
出来たらいいなーという話です。さらっとググりましたが載っていなかったので。
時間のある時にでも検証してみます。
②は、間違いなく邪道だと思います。この方法で解決している記事もありますが、
LinuxのMySQLではデフォルトが「区別する」設定なので、WEBアプリを別サーバに移設した際、
そのサーバのMySQLが「区別する」の設定のままだった場合に不整合が起きてしまいます。
設定方法は以下です。
しょうがないので、今回は①、手作業で変更しました・・・。
テーブル数が10個前後だったのでよかったですが、大量のテーブル数だったら鬼大変ですね。はは。
以上。
スポンサーサイト