MySQL で lower_case_table_names を記録する際の落とし穴の詳細な説明

MySQL で lower_case_table_names を記録する際の落とし穴の詳細な説明

1 原因

プロジェクトがデータベースを移行して再起動した後、「T_AAAテーブルが存在しません」というエラーメッセージが表示されましたが、テーブルはデータベース内に表示され、データがあります。

2 問題分析

システムとデータベースを再インストールして、システムとデータベースがクリーンであることを確認します。原因となっているシステムとデータベースを排除します。同じ方法を使用して、2 日前と 1 日前のデータ バックアップを復元します。プロジェクトはまだ開始できません。データ コンテンツの原因を排除します。mysqldump を使用して SQL ファイルをエクスポートし、1 日前のデータを復元します。プロジェクトはまだ開始できません。回復方法の原因を排除します。

上記の方法は、基本的に運用保守担当者が参加します。技術ディレクターがプロジェクトエラーの観察に参加した後、突然、テーブル名の大文字と小文字の問題であることがわかりました。テストを通じて最終的に原因が判明しました。
rpm パッケージを使用してデータベースをインストールします。自動初期化中に lower_case_table_names を 0 に設定します。テーブル名は大文字と小文字が区別され、データベースでは小文字、コードでは大文字になります。

3つの解決策

  • 初期化されたデータベース (base_dir、data_dir など) を削除します。
  • データベースを再初期化し、lower_case_table_namesを1に設定します。
  • バックアップデータを復元する

4 結論

MySQL 8.0 以降では、lower-case-table-names パラメータは初期化時にのみ設定でき、my.cnf を変更しても設定できません (my.cnf に設定を追加するとエラーが発生します)。

データベースを初期化するには、MySQL 全体をアンインストールして再インストールする必要はありません。mysqld コマンドを使用するだけで済みます。

base_dir のユーザー グループは mysql である必要があります。Linux でのコマンドは次のとおりです。

chown -R mysql.mysql MySQLデータパス(base_dirなど)

Linuxでディレクトリを再帰的に作成する

mkdir -p mysql/lib/mysql-files

MySQLの再初期化

mysqld -initialize --lower-case-table-names=1

MySQL 8.0以降では、まずユーザーを作成してから権限を付与する必要があります。

'test' で識別されるユーザー 'test'@'%' を作成します。
-- オプションを使用すると、他のユーザーに権限を付与できます。オプションを使用して、test.* のすべての権限を 'test'@'%' に付与します。

これで、MySQL で lower_case_table_names を記録する際の落とし穴に関するこの記事は終了です。MySQL lower_case_table_names に関するより関連性の高いコンテンツについては、123WORDPRESS.COM の以前の記事を検索するか、以下の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。

以下もご興味があるかもしれません:
  • MySQL 8.0の落とし穴の詳細な説明
  • MySQL 5.7 にアップグレードした後に開発者が注意しなければならない落とし穴
  • MySQL 8.0 の新機能の落とし穴と解決策についての簡単な説明 (要約)
  • MySQL の NOT IN 充填ピットの NULL 列の問題の解決方法
  • MySQL 5.7 の一時テーブルスペースを使用して落とし穴を回避する方法
  • Mysql 5.7.19 無料インストール バージョンで遭遇した落とし穴 (コレクション)
  • MySQL 8.0.18 圧縮パッケージのインストールと忘れたパスワードのリセット時に遭遇する落とし穴
  • MySql8.0.19 インストールピットレコードを共有する

<<:  16 の XHTML1.0 と HTML の互換性ガイドラインの概要

>>:  純粋な CSS ヘッダーの実装コードを修正

推薦する

MySQL でタイムゾーンを表示および変更する方法

今日、プログラムが間違った時刻を挿入し、フィールドがデフォルト値 CURRENT_TIMESTAMP...

HTML でテキストの折り返しを実装する例 (HTML でテキストと画像が混在)

1. 画像の周りのテキスト通常のものを使用する場合、たとえば次のようになります。コードをコピーコー...

HTML 画像 img タグ_Powernode Java アカデミー

まとめプロジェクトの説明形式<img src="..."> H2+ ...

MySQL の NULL 値に関する体験談と分析チュートリアルシリーズ

目次1. テストデータ2. ヌル値による不便3. スペース、空の値、null をどのように判断すれば...

Ubuntu 20.04 LTSの詳細なインストール履歴

この記事では、USB ブート ディスクの作成とシステムのインストールについて説明します。システム構成...

HTML+CSS+JavaScript でガールフレンド版のスクラッチ カードを作成します (一度見ればすぐに覚えられます)

誰もがスクラッチ チケットで遊んだことがあると思います。子供の頃、ポケットにお金が入るとすぐに友達に...

Centos7にGitLabサーバーをインストールして展開する方法

私はここでCentOS 7 64ビットシステムを使用しています。CentOS 64ビットシステムを試...

フラッシュプラグインを使用してPCのカメラを呼び出し、TMLページに埋め込む方法

序文この記事を書いた主な理由は、チームリーダーが、ブラウザを使用してコンピューターのカメラを呼び出し...

Alpine イメージに Ansible サービスを追加する方法

apk add ansible を使用して、alpine イメージに ansible サービスを追加...

MySQL インデックスの最適化: ページング探索の詳細な紹介

目次MySQL インデックス最適化ページングの調査ケース1ケース2 MySQL インデックス最適化ペ...

LinuxのバックグラウンドでPythonプログラムを実行するいくつかの方法

1. 最初の方法は、unhup コマンドを直接使用してプログラムをバックグラウンドで実行することです...

カスタムスクロールバー効果を実現するJavaScript

実際のプロジェクトでは、上下のスクロール バーと左右のスクロール バーは DIV 内にないため、右の...

高品質なウェブページのデザイン方法 高品質なウェブページ(画像とテキスト)のデザイン経験

オープンプラットフォームの増加に伴い、そこから派生するさまざまなアプリケーションサービスも増加傾向に...

ニューススタイルのウェブサイトデザイン例25選

bmi ボイジャーピッチフォークアルスター食料品店チャウ真/斜めポスタこれは偽のDIYですクリエイテ...

WIN10 システムと Docker 内部コンテナ IP 間の通信方法

1. Windows 版の Docker をインストールしたら、Docker クイックスタート ター...