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 ヘッダーの実装コードを修正

推薦する

CSSのline-heightとheightの詳細な説明

最近、CSS インターフェースに取り組んでいるときに、line-height と height とい...

CSS3でハートを描く

成果を達成する要件/機能: CSS + HTML を使用してハートを描く方法。分析:正方形と 2 つ...

空のパスがページのパフォーマンスに与える影響に対する解決策

数日前、Google Reader で Yu Bo さんが共有した投稿「空のパスがページのパフォーマ...

Vue ページに img 画像を導入する方法

HTMLを学ぶとき、画像タグ<img>は画像を導入します <img src=&qu...

Vue の下部ナビゲーション バー TabBar を実装するための非常に詳細なチュートリアル

目次プロジェクト紹介:プロジェクトディレクトリ: TabBar 効果のプレビュー: TabBar 実...

webpackコード断片化の実装

目次背景コモンズチャンクプラグイン分割チャンク構成リソースを非同期に読み込む要約する背景高性能なアプ...

Apache をインストールした後、サービスを開始できません (サービスを開始するとエラー コード 1 が表示されます)

目次1. エラーメッセージ2. エラーの原因3. 解決策1. エラーメッセージ1. インストール後、...

MySQL ログイン エラーを解決する: 'ユーザー 'root'@'localhost' へのアクセスが拒否されました

まず、コマンドラインまたはワークベンチを使用して MySQL にログインできず、「ユーザー '...

M1 チップに MySQL 8.0 データベースをインストールする方法 (画像とテキスト)

1. ダウンロードまず、MySQLの国内ミラーをお勧めします。特に速いわけではありませんが、それで...

IntelliJ IDEA で Java を使用して MySQL データベースに接続する方法の詳細な説明

1. MySQLデータベースをダウンロードし、インストールして設定するダウンロードアドレス: htt...

Vueプラグインの書き方を説明する記事

目次プラグインとはプラグインの作成プラグインの使用要約するプラグインとはVue フレームワークでは、...

クロスブラウザローカルストレージⅠ

原文: http://www.planabc.net/2008/08/05/userdata_beh...

効果的なウェブフォームのための 8 つのルール

ユーザーから情報を収集する場合、Web フォームを使用するより簡単で直接的な方法はありません。適切に...

Hタグの定義と注意事項について簡単に説明します

結果から判断すると、タイトルを定義するための固定パターンはなく、すべてむしろランダムな感じがします。...

URL 内の特殊記号の意味を知っていますか?

1.# # は Web ページ内の場所を表します。右側の文字はその位置の識別子です。たとえば、ht...