はじめに
サーバのlower_case_table_namesを変更についてと、docker-compose.ymlでの適用方法について書きます。
サーバのlower_case_table_namesを変更(断念)
lower_case_table_namesはmy.cnfの記載を変更するだけでは動きません。
以下のページを参考にlower_case_table_namesを変えようと思って途中までやってみました(その後汗握る事態に
参考リンク
https://qiita.com/tomato_sugar/items/1b3373b1e3ba0997ddbb
断念した理由
これは設定ファイルやデータ等を一旦避難してmysqlを初期化、その後に元の設定ファイルを適用してデータはダンプファイルを復元する流れになります。ユーザも作り直しです。もはやデータベースの移植ですね。
どうしても行わなければいけない場合、それなりに作業量があり、エラーが出る可能性が高いことを覚悟の上行いましょう。
私は問題自体が別の方法で解決できそうなので、途中でやめて元に戻しました。
docker-compose.ymlで指定する
同じようにDocker環境でもmy.cnfを変えてコンテナをビルドするだけでは変更できません。
lower_case_table_namesはコマンドの引数で最初に指定する必要があります。
以下docker-compose.ymlで指定する例です。
services:
db:
build:
context: .
dockerfile: ./container/db/Dockerfile
command: --lower_case_table_names=1
ports:
- 3306:3306
environment:
MYSQL_DATABASE: ******
MYSQL_USER: ******
MYSQL_PASSWORD: ******
MYSQL_ROOT_PASSWORD: ******
TZ: "Asia/Tokyo"
volumes:
- mysql-volume:/var/lib/mysql
- ./container/db/init_dump:/docker-entrypoint-initdb.d/
コンテナとmysqlのボリュームは消してからビルドしましょう。