Docker は mysql8 の lower_case_table_names パラメータをインストールします

序文

mysql のインストールには docker が使用されるため、最も重要なことは、ワンクリックでプルし、ワンクリックで開始することです。その後、mysql コンテナのインストールのプロセス中に、lower_case_table_names

問題が見つかりました

デプロイメント前に、ローカル サーバーの mysql データベースが使用され、新しいサーバーがオンラインになったため、作成者は実行環境を再構成し、mysql をインストールし、サーバー上のデータベースにローカル ライブラリをインポートする必要がありました。ここ。

ここに画像の説明を挿入します
データテーブルは明らかに存在しますが、springboot の起動後、データテーブルをクエリできないことが表示されるという問題があります。

問題を見つけてください

これがlower_case_table_namesパラメータに問題があることに疑いの余地はありません。

show variables like '%lower_case%';

ここに画像の説明を挿入します
lower_case_table_namesmysql が大文字と小文字を区別するかどうかを設定するパラメータです。

lower_case_table_names=0 テーブル名は指定されたサイズで保存され、比較では大文字と小文字が区別されます
lower_case_table_names = 1 テーブル名は小文字でディスクに保存されますが、比較では大文字と小文字が区別されません > >
lower_case_table_names=2 テーブル名は指定された大文字と小文字で保存されますが、小文字で比較されます

ローカル ライブラリlower_case_table_names = 1のため、データ テーブル クエリでは大文字と小文字が区別されず、Docker によって取得される mysql イメージはデフォルトで lower_case_table_names=0 になります。上記のデータが表示されます。 テーブルが見つかりませんTable xxx.xxx doesn't exit

解決

オンラインでデータベースを作成する場合は、ローカル データベースのパラメータと一致している必要があるため、コンテナを作成するときにパラメータを設定します。lower_case_table_names = 1。コンテナを作成するコマンドは次のとおりです。

外部ファイルをマウントしないでください
docker run -d --name mysql -e MYSQL_ROOT_PASSWORD=123456\
-p 3306:3306 mysql --lower-case-table-names=1
外部ファイルをマウントする
docker run --name mysql \
-v /docker/mysql/log:/var/log/mysql \ 
-v /docker/mysql/data:/var/lib/mysql \ 
-p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 \
-d mysql --lower-case-table-names=1

最後のものに注意してください --lower-case-table-names=1これを見逃さないことが非常に重要です。

おすすめ

転載: blog.csdn.net/qq_50661854/article/details/132401229