BETA

MySQLのlower_case_tables_namesでハマった

投稿日:2020-07-24
最終更新:2020-07-24

まえがき

Windowsで開発していたJava + MySQLのプロジェクトの開発をLinuxデスクトップで
引き継いでみようと思ってやってみた。

本文

大枠としては普通に動いた。 IntelliJ IDEA は普通にLinux版がある。
MySQLももちろんLinux版がある。
Javaもバッチリ。

ではOKと思ってシステムを起動してみると、MySQLのテーブルがないといって落ちる。
データはWindows上で動いてたときのをそのままdump/restoreしたのに。

原因

  • MySQLがテーブル名大文字小文字を区別するか否かは lower_case_tables_names という設定で変わる
  • 公式 https://dev.mysql.com/doc/refman/8.0/en/identifier-case-sensitivity.html
  • この設定はOSによって初期値が異なり、簡単に言えば Windows / macOS は大文字小文字を区別しない。Linuxではテーブル名の大文字小文字を区別する。
  • で、システム内のSQLを見ると…大文字小文字がDB上のと全然違うので「なるほどね。。」と

蛇足

  • lower_case_tables_names は、dumpを取り込む前にセットした方がいいです。(ファイル名の取扱が変わるため)
  • 当方の環境ではとりあえず、 lower_case_tables_names = 1 をセットしてOKとなりました。
技術ブログをはじめよう Qrunch(クランチ)は、プログラマの技術アプトプットに特化したブログサービスです
駆け出しエンジニアからエキスパートまで全ての方々のアウトプットを歓迎しております!
or 外部アカウントで 登録 / ログイン する
クランチについてもっと詳しく

この記事が掲載されているブログ

Webアプリケーション書いてます。インフラもやります。 私の投稿内の設定、コマンド、プログラム、スクリプト等は、商用、非商用を問わずご自由にお使い下さい。当方の著作権表示・許可等は一切不要です。 ただし、内容についていかなる保証もありません。(誤り指摘歓迎します)

よく一緒に読まれる記事

0件のコメント

ブログ開設 or ログイン してコメントを送ってみよう