大文字と小文字の区別

Javaをやるといってかれこれ1年。。。。
今後仕事で使っていくことになるので、もしかしたらJavaについて書いていくかもです。

それはさておき、今日はちょっとしたことでつまってしまったので、
今後同じようなことでつまらないようメモ代わりに書いておきます。

MySQLのデータベース名、テーブル名はOSによって大文字と小文字の区別がされる。
とのことです。

今日、Windowsで開発を進めていたものをサーバに上げて確認しようとしたのですが、
エラーが起こって動きませんでした。
エラーの内容は「テーブルが存在しません」というものでした。
けれど、今までにローカルでそのようなエラーは出ていませんでしたし、
テーブルやデータはサーバのテーブルをダンプして使っているので存在しないということはありませんでした。

10分ほど悩んで、どうしてもわからなかったので誰かに聞いてみようかと思った時、
ふとあることを思い出しました。

「そういえば、ダンプした時にみたテーブル名は大文字ではなかったか?」

と。

スクリプトに書いているSQLのテーブル名はすべて小文字だったので、
試しに一度大文字に変えてサーバにあげてみました。

動きました。。。。

調べてみるとMySQLはOSによってはDB、テーブル名を大文字と小文字で区別するそうです。
Windwosでは区別しないそうなので、大文字で作られたテーブルに対して小文字でSQLを組んでも怒られませんでしたが、
Unixでは区別するそうなので怒られたみたいです。

今までテーブル名を大文字で作って開発をしたことがなかったので、
意識せずに小文字でテーブル名を書いていたのがいけなかったようです。

しかし、大文字と小文字の区別があるとはびっくりです。
今後テーブル名などは定義どおりに大文字なら大文字で、小文字なら小文字で作っていこうと思います。

あと、ほかのDBではどうなのかもあとで調べてみようと思います。