ホームページ >データベース >mysql チュートリアル >MySQL の一般的なエラー分析と解決策のまとめ

MySQL の一般的なエラー分析と解決策のまとめ

coldplay.xixi
coldplay.xixi転載
2021-01-20 10:12:233084ブラウズ

MySQL の一般的なエラー分析と解決策のまとめ

関連する無料学習の推奨事項: mysql ビデオ チュートリアル

1. 「localhost」の MySQL サーバーに接続できません (10061)
翻訳: localhost の mysql に接続できません
分析: これは、「localhost」コンピューターが存在することを意味します。ただし、このマシンには MySQL サービスが提供されていません。
このマシンで MySQL サービスを開始する必要があります。このエラーは、マシンの負荷が高すぎて、対応するリクエストに対応する時間がない場合にも発生します。
解決策: mysql が起動されていないため、このマシン上で mysql を起動します。起動に失敗する場合は、主に my.ini 設定に問題があることが原因です。再構成するだけです。
mysql のロードが異常であると思われる場合は、mysql/bin ディレクトリに移動し、mysqladmin -uroot -p123 processlist を実行して、現在の mysql プロセスを表示できます。

2. 不明な MySQL サーバー ホスト ‘localhosadst’ (11001)
翻訳: 不明な MySQL サーバー localhosadst
分析: サーバー localhosasdst が存在しません。または、まったく接続できません。
解決策: フォーラムの下の ./config.inc.php を注意深く確認して $dbhost を見つけ、正しい mysql サーバー アドレスにリセットします。

3. ユーザーのアクセスが拒否されました: 'roota@localhost' (使用パスワード: YES)
意味: ユーザー roota の localhost へのアクセスが拒否されました (通過は許可されません)
分析 : このエラーは、一般的なデータベースのユーザー名とパスワードが mysql サーバーに対して間違っていることが原因で発生します。
解決策: フォーラムの下の ./config.inc.php を注意深く確認し、$dbuser と $dbpw を見つけて確認し、リセットして、保存。

4. ユーザー: 'red@localhost' からデータベース 'newbbs' へのアクセスが拒否されました# 意味: ユーザー red には、localhost サーバー上のデータベース newbbs を操作する権限がありません
分析: このヒントは質問 3 とは異なります。これはデータベースへの接続時にブロックされ、データベースの操作中にこのエラーが発生しました。たとえば、更新などを選択します。これは、ユーザーがデータベースを操作するための対応する権限を持っていないためです。たとえば、select 操作は mysql.user.Select_priv に記録されますが、Y は操作可能、N は操作できません。
解決策: 独自の独立ホストの場合は、mysql.user の対応するユーザー レコードを更新します (たとえば、ここで更新されるユーザーは赤色です)。または、./config.inc.php を直接変更して、データベースを操作する権限を持つユーザーを構成します。
または、次のコマンドを使用して認可付与を更新し、dbname.* に対するすべての権限を 'user'@'localhost' に付与します。パスワード'
ヒント: mysql データベース内のレコードを更新する場合、更新を有効にするために mysql サーバーを再起動する必要があります
FLUSH PRIVILEGES;

5. データベースが選択されていません 翻訳 : データベースが選択されていません
分析 : 理由は 2 つあります
config.inc.php の $dbname 設定が正しくありません。その結果、データベースはまったく存在しないため、$db->select_db($dbname); は false
を返します。上記の質問 4 と同じです。データベース ユーザーには選択権限がありません。このようなエラーを引き起こします。 config.inc.php の設定に問題がないにもかかわらず、このエラーが表示される場合は、これが当てはまると考えられます。
解決策: 適切な薬を処方する
config.inc.php を開いて $dbname を見つけ、再構成を確認して保存します
問題 4 の解決策と同じ

6.ファイルを開けません: ' xxx_forums.MYI'. (errno: 145) 翻訳: xxx_forums.MYI
を開けません 問題分析:
この状況は、cdb_forums を開けないことが原因で発生します。 .MYI (この状況を引き起こす可能性があります) 理由は次のとおりです:
1. サーバーが異常にシャットダウンした、データベースが配置されているスペースがいっぱいになった、またはその他の不明な理由によりデータベース テーブルが損傷しました。
2. Unix 系オペレーティング システムでデータベース ファイルを直接コピーおよび移動すると、ファイルのグループ所有権が原因でこのエラーが発生します。
解決策:
1. データ テーブルを修復します
データ テーブルを修復するには、次の 2 つの方法を使用できます: (最初の方法は、独立したホスト ユーザーにのみ適しています)
1) myisamchk を使用します。これは、MySQL ユーザー データ テーブルのチェックと修復専用のツール、myisamchk に付属しています。現在のディレクトリを MySQL/bin に変更します。通常、myisamchk コマンドはこのディレクトリでのみ実行できます。よく使用される修復コマンドは次のとおりです: myisamchk -r データ ファイル ディレクトリ/データ テーブル名.MYI;
2) phpMyAdmin による修復. phpMyAdmin にはデータ テーブルを修復する機能があります。特定のテーブルを入力した後、[操作] をクリックします。後述の「テーブルのメンテナンス」の「テーブルの修復」を参照してください。
注: 上記の 2 つの修復方法を実行する前に、データベースをバックアップする必要があります。
2. ファイルのグループを変更します (独立ホスト ユーザーのみに適しています)
1) データベース ファイルをコピーするプロセス中、データベース ファイルは、MySQL を実行しているアカウントによって読み取りおよび書き込み可能に設定されていません (一般に Linux および FreeBSD ユーザーに適用されます)。

7. テーブル 'test.xxx_sessions' は存在しません
翻訳: テーブル xxxxx が存在しません
分析: 次のような SQL ステートメントの実行時にテーブルが見つかりませんでした。 SELECT * FROM xxx_members WHERE uid='XX' テーブル xxx_members が $dbname データベースに存在しない場合、このエラーが表示されます。具体的な状況は次の 3 つの状況で説明できます。
プラグインまたはハックのインストール時にプログラム ファイルが変更されましたが、それに応じてデータベースがアップグレードされるのを忘れていました。
不完全なバックアップがバックグラウンドで使用され、データがインポートされるときに、対応するバージョンがインストールされているフォーラムのデータベースにはインポートされません。
解決策: 問題には同じ解決策が与えられますが、異なる理由で異なる治療方法が使用されます。
プラグイン作成者が提供するインストール手順を注意深く確認し、データベースで不足している操作を埋めてください。それでも問題が解決できない場合は、プラグインが利用可能であるかどうかを疑う必要があります。プラグインの作成者に問い合わせるか、プラグインをアンインストールしてください。
見栄を張らずに、自分の足のサイズと同じくらい大きな靴を履いてください。

8. Unknown columns 'column_name' in 'field list'
翻訳: 不明なフィールド名 column_name
分析: In このエラーは、SQL ステートメントを実行するときに、指定されたテーブルに存在しないフィールド名が表示された場合に発生します。具体的な理由は次の 2 つに分けられます。
プラグインやハックのインストール時にプログラム ファイルが変更されたのに、それに伴うデータベースのアップグレードが忘れられていた。
プログラム ファイルとデータベースが一致しません。たとえば、d2.5 データベースが d4.1 プログラム用に構成されている場合、このエラーは必ず発生します。
解決策: 原因は問題 8 の 1 と 3 と同じであるため、解決策も同じです。

9. SQL 構文にエラーがあります
翻訳: SQL に構文エラーがあります
分析: フォーラムの標準手順では、SQL は存在しません。の構文エラー。したがって、このエラーの原因は通常、プラグインのインストールまたは許可のないプログラムの変更の 2 つのカテゴリに分類されます。
異なるバージョンのデータベースをエクスポートおよびインポートします。たとえば、MySQL4.1 のデータには、文字セットの設定など、エクスポートされたステートメントに MySQL4.0 にない機能が含まれています。このとき、これらの SQL をインポートすると、 MySQL4.0 SQL文法エラーが発生します。
解決策:
エラー箇所をよく確認して修正し、問題が解決しない場合は、エラーのあるプログラムを標準プログラムに置き換えます。
データベースをバックアップする場合は注意してください。他のバージョンの mysql に流し込む予定がない場合は考慮する必要はありませんが、それ以外の場合は特別な設定が必要です。 DZ4.1 のバックグラウンド データ バックアップを使用すると、プロンプトに従って希望の形式を設定できます。独立したホストは、どこにいてもそれを mysql4.0 形式にエクスポートできます。
mysqldump -uroot -p –default-character-set=latin1 –set-charset=gbk –skip-opt databse > test.sql

10. キーのエントリ 'xxx' が重複しています1 変換: xxx を挿入してインデックスを複製します。 1
分析: インデックスが一次一意である場合、データ テーブル内のデータに対応するフィールドは、各レコードの一意性を保証する必要があります。そうしないと、このエラーが発生します。
通常、データベースに操作を書き込むときに発生します。たとえば、Discuz! 4.1 フォーラム プログラムでは、すべてのメンバーのユーザー名が一意である必要があります。つまり、ユーザー名のインデックスも一意である必要があります。このとき、既存のユーザー名がcdb_members テーブルに強制的に挿入されます。このエラーはレコードに送信されるか、レコードのユーザー名が既存のユーザー名に更新されます。
このエラーは、テーブル構造を変更するときにも発生する可能性があります。たとえば、Discuz! 4.0 フォーラム データベースでは、cdb_members.username のインデックス タイプはインデックスです。このとき、同じユーザー名のレコードの存在が許可されます。4.1 にアップグレードする場合は、ユーザー名のインデックスを以前のインデックスから変更する必要があります。元のインデックスを一意にします。このとき、cdb_members に同じユーザー名のレコードが存在すると、このエラーが発生します。
データをエクスポートする際、何らかの理由 (作者はまだ明らかではありません) により同じレコードが繰り返しエクスポートされる場合があるため、バックアップ データのインポート時にこのエラーが発生することは避けられません。
auto_increment の値を変更し、「次の Autoindex」が既存のレコードになるようにしました。
解決策: 2 つのアイデアがあり、1 つは一意のインデックスを破棄することです。 2 つ目は、重複したデータ レコードを削除し、1 つだけを保持することです。明らかに、最初の考え方はお勧めできません。次に、2 番目のアイデアに従って、上記の i ii iii
やや
に対応する次の解決策を考え出します。エラー プロンプトの情報に従って、データベース内の重複レコードを削除し、1 つのみを保持します。 。その後、アップグレード操作を続行します。
これが発生する可能性は非常に低いため、テキスト エディタを使用してバックアップ ドキュメントを開いて、重複する情報を探すことができます。余分な部分を取り除き、1 枚だけ残しておきます。
テーブル内の最大の auto_increment を持つレコードをクエリし、auto_increment をそれより 1 大きい値に設定します。
PS: テーブル「テーブル名」を修復すると、問題を一時的に解決できます。

11. キー名 'xxx' が重複しています
翻訳: インデックス名が重複しています
分析: 作成するインデックスは既に存在するため、このエラーが発生します。このエラーは主に次の場合に発生します。アップグレード中。すでにアップグレードされているものを繰り返しアップグレードすることによって発生するエラーである可能性があります。前のユーザーが許可なく追加したインデックスが、アップグレード ファイル内のインデックスと偶然同じである可能性もあります。
解決策: 既存のインデックスと追加するインデックスが同じか確認し、同じであればこのSQL文はスキップして構いませんが、異なる場合は既存のインデックスを削除して再度実行してください。

12. 重複した列名 'xxx'
翻訳: 重複したフィールド名 xxx
分析: 追加されたフィールド xxx はすでに存在しており、ほとんどの場合アップグレード プロセス中に発生します。質問12の生成も同様です。
解決策: 既存のフィールドが追加するフィールドとまったく同じ属性を持っているかどうかを確認してください。同じであれば、この SQL ステートメントの実行をスキップできます。異なる場合は、フィールドを削除してください。その後、アップグレード手順に進みます。

13. テーブル 'xxx' はすでに存在します
翻訳: データ テーブル xxx はすでに存在します
分析: テーブル 'xxx' はライブラリにすでに存在します。再度作成してください。この名前テーブルを使用すると、このエラーが発生します。フォーラムのアップグレードでも同じことが起こります。質問 12 と同様です。
解決策: 既存のテーブルが作成するテーブルとまったく同じかどうかを確認してください。同じであれば、この SQL の実行をスキップできます。そうでない場合は、最初に既存のテーブルを削除してから、アップグレードの実行を続行してください。ファイル。

14. データベース 'xxx' を作成できません。データベースが存在します
翻訳: データベース xxx を作成できません、データベースはすでに存在します
分析: 以下のデータベース名mysql 一意性が保証されている必要があります。保証されていない場合、このエラーが発生します。
解決策: 名前が競合しないように、既存のデータベースの名前を変更するか、作成するデータベースの名前を変更します。

15. 概要 (質問 11\12\13\14\15 について)
このような質問のエラー メッセージには重複したキーワードが隠されています
では、何ができないのかMySQL データベースに対しても同じことを繰り返す必要がありますか?
データベース データベース
同一データベース内のデータテーブル
同一データテーブル内のフィールド列
同一データテーブル内のインデックスキー
同一データテーブルには一意のインデックス (UNIQUE PRIMARY) がありますこの場合、レコード内のこれらのフィールドを繰り返すことはできません

16. 不明なシステム変数 'NAMES'
翻訳: 不明なシステム変数 NAMES
分析: Mysql バージョンはサポートしていません文字セットの設定において、文字セットを強制的に設定した場合にこのエラーが発生します。
解決策: SQL ステートメントの SET NAMES 'xxx' ステートメントを削除します

17. クエリ中に MySQL サーバーへの接続が失われます
意味: MySQL サーバーがクエリ期間中に接続を失います。
分析: この問題は、データベースにリモート接続するときに発生することがあります。 MySQL サーバーは SQL ステートメントの実行中に接続を失いました。
対処方法: 通常は対処の必要はありませんが、頻繁に発生する場合はハードウェア環境の改善を検討してください。

18. ユーザー 'red' が 'max_updates' リソース (現在の値: 500) を超えました
翻訳: msql ユーザー red が 'max_updates' (更新の最大数) を超えました)、'max_questions' (クエリの最大数)、'max_connections' (最大接続数)、現在 500 に設定されています
分析: mysql データベースの下に mysql という名前のライブラリがあり、その中に、 user 各レコードは、mysql ユーザーの承認に対応します。 max_questions、max_updates、max_connections の各フィールドには、クエリの最大数、更新の最大数、および接続の最大数がそれぞれ記録されます。このエラーは、現在のパラメータのいずれかが設定値より大きい場合に発生します。
解決策: 独立したホスト ユーザーは、認可テーブルを直接変更できます。変更後、mysql を再起動するか、認可テーブルを更新し、mysql プロンプトに入り、
FLUSH PRIVILEGES;
の後にセミコロンを付けることを忘れないでください ';'
仮想ホストのユーザーが常にこの問題を抱えている場合スペースプロバイダーが問題を交渉して解決します。

19. 接続が多すぎます (1040) 接続が多すぎます
翻訳: 接続の最大数に達しました
問題分析:
接続数が超過していますmysql によって設定された値。 max_connections と wait_timeout の両方に関連します。 wait_timeout の値が大きいほど、接続のアイドル待機時間が長くなり、現在の接続数が増加します。
解決策:
1. 仮想ホスト ユーザーは、スペース プロバイダーに問い合わせて、仮想ホストの構成を最適化してください。 MySQL サーバー;
2. 独立したホスト ユーザーは、MySQL サーバーの構成を最適化するためにサーバー管理者に問い合わせてください。以下を参照してください:
MySQL 構成ファイル my.ini または my.cnf のパラメーターを変更します。 ## max_connections= 1000
wait_timeout = 10
変更後に MySQL を再起動してください。このエラーが頻繁に報告される場合は、サーバー全体の最適化を行ってください。

20. ホスト '%s' 上のユーザー '%s' に対してそのような許可が定義されていません。
エラー番号: 1141
問題分析:
MySQL 現在ユーザー アクセスがありませんデータベースに。
解決策:
1. 仮想ホスト ユーザーは、スペース プロバイダーに問い合わせて、提供されたアカウントにデータベースを承認する権限があるかどうかを確認してください。
2. 独立ホスト ユーザーの場合は、サーバー管理者に問い合わせて、提供されたデータベース アカウントにこのデータベースを管理する権限があるかどうかを確認してください。

21. '%s' から '%s' への名前変更時のエラー (エラー番号: %d)
エラー:1025
問題分析:
お願いしますプログラムにデータベース テーブル名を変更するステートメントが含まれているかどうかを確認してください。
解決策:
1. プログラム内のデータベース テーブル名を変更する必要がある場所を確認してください。
2. 実際のアプリケーションでデータベース テーブル名を変更する必要がある場合は、スペース プロバイダーまたはサーバーに問い合わせてください。管理者は、ライブラリ名とサーバー自体が正常かどうかを変更する権限を与えています。

22. ファイル '%s' の読み取りエラー (エラー番号: %d)
エラー:1023
問題分析:
データベース ファイルを読み取ることができません Pick 。
解決策:
1. 仮想ホスト ユーザーは、スペース プロバイダーに問い合わせて、データベースが損傷していないかどうかを確認してください。
2. 独立ホストのユーザーはサーバー管理者に問い合わせて、MySQL 自体が正常かどうか、MySQL がファイルを読み込めるかどうかを確認してください。Linux のユーザーは、MySQL データベース ファイルの所有者が正しいかどうか、ファイル自体が破損していないかどうかを確認できます。

23. 多数の接続エラーのため、ホスト '*****' がブロックされています。'mysqladmin flash-hosts'
エラーでブロックを解除してください。:1129
問題分析:
データベースで例外が発生しました。データベースを再起動してください。
解決策:
1. 多くの接続エラーにより、ホスト '****' はブロックされています。仮想ホスト ユーザーは処理のためにスペース プロバイダーに連絡してください。独立ホスト ユーザーはサーバー管理者に連絡してください。MySQL コマンドで制御 'mysqladminlush-hosts' をオフラインで実行してブロックを解除するか、MySQL データベースを再起動してください

24. データベースを削除しています ('%s' を削除できません、エラー番号: %d)
error.:1009
問題分析:
データベース ファイルを削除できないため、データベースの削除に失敗します。
解決策:
1. 使用しているデータベース管理アカウントにデータを削除する権限があるかどうかを確認します。
2. データベースが存在するかどうかを確認します。

25、テーブル ハンドラーからエラー 28 が発生しました。
error.:1030
問題分析:
データベースが配置されているディスク領域がいっぱいです。
解決策:
1. 仮想ホスト ユーザーは、スペース プロバイダーに連絡して、MySQL が配置されているディスク スペースを増やすか、不要なファイルをクリーンアップしてください。
2. 独立ホスト ユーザーは、サーバー管理者に連絡して、 MySQL が配置されているディスク領域、またはいくつかの役に立たないファイルをクリーンアップします。

26. 新しいスレッドを作成できません。使用可能なメモリが不足していない場合は、可能な OS のマニュアルを参照してください。依存バグ。
エラー:11/35
問題分析:
データベース サーバーの問題。データベース操作で新しいスレッドを作成できません。通常、理由は 2 つあります。
1. サーバー システム メモリのオーバーフロー。
2. 環境ソフトウェアが破損しているか、システムが破損しています。
解決策:
1. 仮想ホストユーザーは、スペースプロバイダーに問い合わせて、データベースサーバーのメモリとシステムが正常かどうかを確認してください。
2. 独立したホスト ユーザーは、サーバー管理者に問い合わせて、サーバーのメモリとシステムが正常かどうかを確認してください。サーバーのメモリが不足している場合は、どのプロセスがサーバーのメモリを消費しているかを確認し、サーバーのメモリを増やすかどうかを検討してください。全体的な負荷能力を高めます。

27. エラー: クライアントはサーバーによって要求された認証プロトコルをサポートしていません。MySQL クライアントのアップグレードを検討してください
エラー:1251
問題分析:
MySQL をバージョン 4.1 以降にアップグレードした後に上記の問題が発生する場合は、まず MySQL クライアントがバージョン 4.1 以降であることを確認してください (Windows で問題が発生した場合は、以下の解決策に直接ジャンプできます。Windows の MySQL はクライアントおよびサーバーであるためです)。一緒に)インストールされています)。
解決策:
1. Windows プラットフォーム
主なことは、MySQL に接続されているアカウントの暗号化方法を変更することです。MySQL 4.1/5.0 は PASSWORD によって暗号化されます。これは、次の 2 つの方法で解決できます。
1) mysql->SET PASSWORD FOR 'some_user'@'some_host'=OLD_PASSWORD('new_password');
2) mysql->UPDATE mysql.user SET Password=OLD_PASSWORD('new_password') WHERE Host='some_host' AND User='some_user';
2. Linux/Unix プラットフォーム
Linux プラットフォームでは、まず MySQL クライアントがインストールされているかどうかを確認します。 rpm を使用してこれをインストールします。非常に簡単です。Linux コードは次のとおりです:
rpm -ivh MySQL-client-4.1.15-0.i386.rpm
次に、php をコンパイルするときに、次を追加します:
–with-mysql =/your/ path/to/mysql
は通常解決できます。このエラーがまだ発生する場合は、次のように実行できます:
mysql->SET PASSWORD FOR 'some_user'@'some_host'=OLD_PASSWORD('new_password');
mysql->UPDATE mysql.user SETパスワード=OLD_PASSWORD('new_password') WHERE ホスト='some_host' AND ユーザー='some_user';

28. エラー: ソケット '/var/lib/mysql/mysql.sock' を介してローカル MySQL サーバーに接続できません。
エラー:2002
問題分析:
このエラーは通常、次の 2 つの理由で発生します。
1. MySQL サーバーが起動していません。
2. MySQL サーバーは起動しますが、ソケット ファイルが見つかりません。
解決策:
1. 仮想ホストをご利用の方は、スペース提供者に問い合わせてデータベースが正常に起動するか確認してください。
2. 独立ホスト ユーザーの場合は、MySQL サービスが有効になっているかどうかを確認してください。有効になっていない場合は、MySQL サービスを開始してください。すでに有効になっており、Linux システムの場合は、MySQL ソケットのパスを確認してください。 PHP finds
$dbhost = 'localhost'; ホスト名の後にコロン「:」と MySQL ソケットのパスを追加します。
たとえば、MySQL サーバーが localhost の場合、
MySQL ソケットのパスは /tmp/mysql.sock です。
それを次のように変更します。
$dbhost = 'localhost:/temp/mysql .sock';

29. 「localhost」
エラーで MySQL サーバーに接続できません。:2003
問題分析:
MySQL サービスが正しくありません。通常、使用可能なディスク領域がない、my.ini の MySQL ベースのディレクトリ パス設定が正しくないなどの異常な状況により MySQL が起動できなくなった後に開始されます。
解決策:
1. ディスク領域に空き領域が残っているかどうかを確認し、十分なディスク領域を確保できるようにしてください。
2. my.ini の basedir などのパラメータが正しく設定されているか確認し、MySQL サービスを再起動します。

30. クエリ中に MySQL サーバーへの接続が失われました
エラー:2013
問題分析:
データベース クエリ中に MySQL サーバーへの接続が失われました。
解決策:
1. プログラム内に非常に効率の悪いプログラム (プラグインなど) がないか確認してください。プラグインをアンインストールして、サーバーが正常であるかどうかを確認してください。サーバー自体がリソースを大量に消費するため、仮想ホストユーザーはスペースプロバイダーに確認してください。独立ホストユーザーはサーバー管理者に連絡して、サーバーが正常であるかどうかを確認してください。

31. \'max_allowed_pa​​cket\' バイトより大きいパケットを取得しました エラー番号: 1153
問題分析: Mantis のアップロード添付ファイルのサイズを調整しても、 MySQL 設定ファイル。
解決策:
1. 独立したホスト ユーザーは次のように調整してください。
MySQL 構成ファイル (my.cnf または my.ini) を見つけます。
[mysqld] セクションに文を追加します (存在する場合は値を調整してください):
max_allowed_pa​​cket=10M
MySQL サービスを再起動するだけです。ここでの設定は10MBです。
2. 仮想ホスト ユーザーは、スペース プロバイダーに連絡してこのパラメータを調整してください。

その他の関連する無料学習の推奨事項: mysql チュートリアル(ビデオ)

以上がMySQL の一般的なエラー分析と解決策のまとめの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はcsdn.netで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。

関連記事

続きを見る