【Mysql8】lower_case_table_namesは簡単には変えられない

はじめに

サーバのlower_case_table_namesを変更についてと、docker-compose.ymlでの適用方法について書きます。

サーバのlower_case_table_namesを変更(断念)

lower_case_table_namesはmy.cnfの記載を変更するだけでは動きません。

以下のページを参考にlower_case_table_namesを変えようと思って途中までやってみました(その後汗握る事態に

参考リンク

https://stackoverflow.com/questions/53103588/lower-case-table-names-1-on-ubuntu-18-04-doesnt-let-mysql-to-start

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のボリュームは消してからビルドしましょう。

コメントする

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

上部へスクロール