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_names
mysql が大文字と小文字を区別するかどうかを設定するパラメータです。
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
これを見逃さないことが非常に重要です。