ホームページ >データベース >mysql チュートリアル >MySQL の一般的なエラーと解決策
1. 'localhost'(10061) 上の MySQL サーバーに接続できません?
翻訳: localhost 上の mysql に接続できません 分析: これは、「localhost」コンピューターが存在することを示していますが、この上にあります。コンピューター マシン上には MySQL サービスが提供されていません。 ?このマシンで MySQL サービスを開始する必要があります。このエラーは、マシンの負荷が高すぎて、対応するリクエストに対応する時間がない場合にも発生します。 ?解決策: mysql が起動されていないため、このマシン上で mysql を起動します。起動に失敗する場合は、主に my.ini 設定に問題があることが原因です。再構成するだけです。 mysql のロードが異常であると思われる場合は、mysql/bin ディレクトリに移動し、mysqladmin-uroot -p123 processlist を実行して、mysql の現在のプロセスを表示できます。
2. 不明な MySQL ServerHost 'localhosadst' (11001)
翻訳: 不明な MySQL サーバー localhosadst? 分析: サーバー localhosasdst が存在しません。それともまったく接続できませんか? 解決策: フォーラムの下の ./config.inc.php を注意深く確認して $dbhost を見つけ、正しい mysql サーバー アドレスにリセットします。
3. ユーザー:'roota@localhost' のアクセスが拒否されました (使用パスワード: YES)
? 解釈: ユーザー roota の localhost へのアクセスが拒否されました (許可されていません)。データベースのユーザー名とパスワードの相対関係が間違っていますか? 解決策: フォーラムの下の ./config.inc.php を注意深く確認し、$dbuser と $dbpw を見つけて確認し、リセットして保存します。
4. ユーザー: 'red@localhost' からデータベース 'newbbs' へのアクセスが拒否されました?
意味: ユーザー red には、localhost サーバー上でデータベース newbbs を操作する権限がありません 分析: このプロンプトは質問と異なりますか?三つ。これはデータベースへの接続時にブロックされており、このエラーはデータベースでの操作中に発生しました。たとえば、selectupdate などです。これは、ユーザーがデータベースを操作するための対応する権限を持っていないためです。たとえば、選択操作は mysql.user.Select_priv に記録されます。Y は操作できますが、N は操作できません。 ?解決策: 独自の独立ホストの場合は、mysql.user の対応するユーザー レコードを更新します。たとえば、ここで更新されるユーザーは赤色です。または、./config.inc.php を直接変更して、データベース操作 の権限を持つユーザーを構成しますか? または、dbname.* の承認のgrantall権限を、「次のコマンドを使用してパスワード」で識別される「user」@「localhost」に更新しますか?ヒント: mysql ライブラリのレコードを更新した後、更新を有効にするには mysql サーバーを再起動する必要がありますか? FLUSH PRIVILEGES;
5. データベースが選択されていません
?翻訳: データベースが選択されていません?分析:理由は次のとおりです。両方の config.inc.php の $dbname 設定が間違っています。その結果、データベースがまったく存在しないため、 $db->select_db($dbname); が上記の質問 4 と同じである場合、 false が返され、これも同様の原因となります。エラー。 config.inc.php の設定に問題がないにもかかわらず、このエラーが表示される場合は、これが当てはまると考えられます。 ?解決策: 適切な薬を処方しますか? config.inc.php を開き、$dbname を見つけて、設定を確認して保存しますか? 問題 4
6 が開けない場合の解決策と同じです。 (エラー番号: 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 * FROMxxx_members WHERE uid='XX' テーブル xxx_members が $dbname ライブラリに存在しない場合、これはというエラーが表示されます。具体的には、次の 3 つの状況で議論されます。 プラグインまたはハッキングをインストールするときに、プログラム ファイルは変更されますが、それに応じてデータベースがアップグレードされるのが忘れられます。 ?バックグラウンドで不完全なバックアップが使用されており、データをインポートする際、対応するバージョンがインストールされているフォーラムのデータベースにはインポートされません。 ?解決策:処方する薬は同じでも、理由が異なれば治療法も異なります。プラグインの作成者が提供するインストール手順を注意深く確認し、データベース上で不足している操作を完了してください。それでも問題が解決できない場合は、プラグインが利用可能かどうかを疑う必要があります。プラグインの作成者に問い合わせるか、プラグインをアンインストールしてください。 ?傲慢にならず、足と同じくらい大きな靴を履いてください。つまり、プログラム ファイルとデータベースを一致させることができます
8. 「フィールド リスト」の不明な列 'column_name'
翻訳: 不明なフィールド名 列名 分析: SQL ステートメントを実行すると、何かが一致しません。指定したテーブルにフィールド名が表示されている場合、このエラーが発生します。具体的な原因は以下の2つに分けられます。 プラグインやハックのインストール時にプログラムファイルが変更されたのに、それに伴うデータベースのアップグレードが忘れられていた。 ?プログラム ファイルとデータベースが一致しません。たとえば、d2.5 データベースが d4.1 プログラム用に構成されている場合、このエラーが必ず発生します。 ?解決策:原因は質問8の1、3と同じですので、解決策も同様です。
9. SQL 構文にエラーがあります
翻訳: SQL に 構文エラーがありますか? 分析: フォーラムの標準プログラムには SQL 構文エラーはありません。このエラーの原因は、一般的に 2 種類あります。プラグインをインストールするか、許可なくプログラムを変更するかです。 ?異なるデータベースバージョンのデータベースエクスポートとインポート 例えば、MySQL4.1のデータには、文字セットの設定など、エクスポートされたステートメントにMySQL4.0にはない機能が含まれています。 MySQL4.0にインポートするとSQL構文エラーが発生します。 ?解決策:?どこにエラーがあるかを注意深く確認し、動作しない場合は、エラーのあるプログラムを標準プログラムに置き換えます。データベースをバックアップする場合は、他のバージョンの mysql に移す予定がない場合は考慮する必要はありません。それ以外の場合は、特別な設定が必要です。 DZ4.1 のバックグラウンド データ バックアップを使用すると、プロンプトに従って希望の形式を設定できます。独立したホストは、どこにいてもそれを mysql4.0 形式にエクスポートできます。 ?mysqldump -uroot -p--default-character-set=latin1 --set-charset=gbk --skip-opt databse >test.sql
10 キー 1 のエントリ 'xxx' が重複しています。
翻訳: 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 iiii に対応する解決策を考え出します。簡単に説明すると、エラー プロンプトの情報に従って、データベース内の重複レコードを削除し、1 つだけを保持します。その後、アップグレード操作を続行します。 ?この問題が発生する可能性は非常に低いですが、テキスト エディタを使用してバックアップ ドキュメントを開いて重複した情報を探すことができます。余分な部分を取り除き、1 枚だけ残しておきます。 ?テーブル内の最大の auto_increment を持つレコードをクエリし、auto_increment をそれより 1 大きい値に設定します。 ?PS: テーブル「テーブル名」を修復すると、問題を一時的に解決できます。
11. キー名「xxx」が重複しています
?翻訳: インデックス名が重複しています? 分析: 作成されるインデックスはすでに存在しているため、このエラーが発生します。このエラーは主にアップグレード中に発生します。すでにアップグレードされているものを繰り返しアップグレードすることによって発生するエラーである可能性があります。前のユーザーが許可なく追加したインデックスが、アップグレード ファイル内のインデックスと偶然同じである可能性もあります。 ?解決策: 既存のインデックスと追加するインデックスが同じであるかどうかを確認し、異なる場合はこの SQL ステートメントをスキップして、既存のインデックスを削除して再度実行します。
12. 列名 'xxx' が重複しています
? 翻訳: フィールド名 xxx が重複していますか? 分析: 追加されたフィールド xxx はすでに存在します。これは問題 12 と同じです。 ?解決策: 既存のフィールドが追加するフィールド attribute とまったく同じかどうかを確認し、同じである場合は、この SQL ステートメントの実行をスキップできます。その後、アップグレード手順に進みます。
13. テーブル 'xxx' はすでに存在します
? 翻訳: データ テーブル xxx はすでに存在しますか? 分析: テーブル xxx はすでにライブラリに存在します。この名前でテーブルを再度作成しようとすると、このエラーが発生します。フォーラムのアップグレードでも同じことが起こります。質問 12 と同様です。解決策: 既存のテーブルが作成するテーブルとまったく同じであるかどうかを確認してください。同じである場合は、この SQL の実行をスキップできます。そうでない場合は、まず既存のテーブルを削除してから、アップグレード ファイルの実行を続けてください。
14. データベース 'xxx' を作成できません。データベースが存在します
翻訳: データベース xxx を作成できません。データベースは既に存在しますか? 分析: mysql の下のデータベース名は一意である必要があります。このエラー。 ?解決策: 名前が競合しないように、既存のデータベースの名前を変更するか、作成するデータベースの名前を変更します。
15. 概要 (質問 1112131415 について)
このような質問のエラー メッセージには重複したキーワードが隠されています。では、
mysql データベース については、何が繰り返されないのでしょうか? ?データベース データベース? 同じデータ テーブルの下のフィールド列? 同じデータ テーブルのレコード内のこれらのフィールドは、インデックスが一意である場合は重複できません (UNIQUEPRIMARY)。
16. 不明なシステム変数 'NAMES'
? 翻訳: 不明な
システム変数
NAMES? 分析: このエラーは、文字セットの設定をサポートしていません。 ?解決策: SQL ステートメントの SET NAMES 'xxx' ステートメントを削除します
Seventeen. クエリ中に MySQL サーバーへの接続が失われます?
意味: クエリ中に MySQL サーバーが接続を失います 分析: データベースへのリモート接続が可能な場合がありますか?この問題があります。 MySQL サーバーは SQL ステートメントの実行中に接続を失いました。 ?対処方法: 頻繁に発生する場合は、通常は対処する必要はありません。ハードウェア環境の改善を検討してください。
18、ユーザー 'red' が 'max_updates' リソース (現在の値: 500) を超えました
翻訳: msql ユーザー red が 'max_updates' (更新の最大数)、'max_questions' (クエリの最大数) を超えました)、'max_connections' (最大接続数)、現在 500 に設定されていますか? 分析: mysql の mysql データベースの下にライブラリがあり、その中の各レコードは 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)?error.:1025?
問題分析: プログラムがデータベース テーブル名のステートメントを変更したかどうかを確認してください。解決策: 1. プログラム内のデータベース テーブル名を変更する必要がある場所を確認してください。 2. 実際のアプリケーションでデータベース テーブル名を変更する必要がある場合は、スペース プロバイダーまたはサーバー管理者に連絡して、変更を開始してください。ライブラリ名とサーバー自体の権限は正常ですか?
22、ファイル '%s' の読み取り中にエラーが発生しました (エラー番号: %d)?error.:1023?
問題分析:?データベース ファイルを読み取ることができません。 ?解決策: ?1. 仮想ホスト ユーザーは、スペース プロバイダーに問い合わせて、データベースが損傷していないかどうかを確認してください。 ?2. 独立ホストのユーザーはサーバー管理者に連絡して、MySQL 自体が正常であるかどうか、MySQL がファイルを読み取れるかどうかを確認してください。MySQL データベース ファイルの所有者が正しいかどうか、ファイル自体が破損しているかどうかを確認できます。
23、ホスト '*****' は多くの接続エラーのためブロックされています。'mysqladmin flash-hosts'?error.:1129 でブロックを解除してください。:1129
問題分析: データベースに例外があります。データベースを再起動してください。 ?解決策: ?1. 接続エラーが多いため、ホスト「****」がブロックされています。独立したホストのユーザーは、サーバー管理者に連絡して「****」を実行してください。 MySQL コマンド コンソールで、Mysqladmin flash-hosts のブロックを解除するか、MySQL データベースを再起動します
24. データベースを削除しています ('%s' を削除できません、エラー番号: %d)?error.:1009?
問題分析: ?データベース ファイルを削除できないため、データベースの削除に失敗します。解決策: 1. 使用しているデータベース管理アカウントにデータを削除する権限があるかどうかを確認します。 ?2. データベースが存在するかどうかを確認します。
25、テーブルハンドラーからエラー 28 が発生しました?error.:1030?
問題分析: データベースが配置されているディスク領域がいっぱいです。解決策: 1. 仮想ホスト ユーザーは、MySQL が配置されているディスク領域を増やすか、いくつかの不要なファイルをクリーンアップするために、スペース プロバイダーに問い合わせてください。 2. 独立したホスト ユーザーは、MySQL が配置されているディスク領域を増やすか、クリーンアップするために、サーバー管理者に問い合わせてください。いくつかの役に立たないファイル
26. 使用可能なメモリが不足していない場合は、OS に依存するバグの可能性についてマニュアルを参照してください。 ?error.:11/35?
問題分析: ?データベースサーバーの問題。データベース操作で新しいスレッドを作成できません。一般に、次の 2 つの理由が考えられます。 1. サーバー システム メモリがオーバーフローします。 ?2. 環境ソフトウェアが破損しているか、システムが破損しています。解決策: 1. 仮想ホスト ユーザーは、スペース プロバイダーに問い合わせて、データベース サーバーのメモリとシステムが正常かどうかを確認してください。 ?2. 独立したホスト ユーザーは、サーバー管理者に問い合わせて、サーバーのメモリとシステムが正常であるかどうかを確認してください。サーバーのメモリが不足している場合は、どのプロセスがサーバーのメモリを消費しているかを確認し、サーバーのメモリを増やすかどうかを検討してください。全体の耐荷重。
27. エラー: クライアントはサーバーによって要求された認証プロトコルをサポートしていません。MySQLclient のアップグレードを検討してください?:1251?
問題分析: MySQL をバージョン 4.1 以降にアップグレードした後に上記の問題が発生した場合は、まず MySQL クライアントがバージョン 4.1 以降であることを確認してください (Windows で問題が発生した場合は、以下にジャンプして解決策を参照してください。 Windows ではクライアントとサーバーと一緒にインストールされます)。解決策: 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 SETPassword=OLD_PASSWORD( ' new_password') WHERE Host='some_host' ANDUser='some_user';?2.Linux/Unix プラットフォーム Linux プラットフォームでは、まず MySQL クライアントがインストールされているかどうかを確認します。これは、rpm を使用してインストールするのが非常に簡単です。コードは:?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 Password= OLD_PASSWORD( 'new_password')WHERE Host='some_host' AND User='some_user';
28. エラー: ソケット '/var/lib/mysql/mysql.sock' を介してローカル MySQL サーバーに接続できません ?エラー。 :2002?
問題分析: このエラーは通常、次の 2 つの理由によるものです。 1. MySQL サーバーが起動していません。 ?2. MySQL サーバーは起動しますが、ソケット ファイルが見つかりません。解決策: 1. 仮想ホストユーザーは、スペースプロバイダーに問い合わせて、データベースが正常に起動するかどうかを確認してください。 ?2. 独立ホスト ユーザーの場合は、MySQL サービスが開始されているかどうかを確認し、開始されていない場合は MySQL サービスを開始し、MySQL ソケットのパスを確認してください。 config.inc.php を開いて ?$dbhost = 'localhost'; ホスト名の後にコロン「:」と MySQL ソケットのパスを追加します。 ?たとえば、MySQL サーバーが localhost の場合、MySQL ソケットのパスは /tmp/mysql.sock? 次のように変更します:?$dbhost= 'localhost:/temp/mysql.sock';
29、「localhost」の MySQLserver に接続できません?error.:2003?
問題分析: MySQL サービスが起動しない場合、これは通常、MySQL が異常な状況下で起動できないことが原因です。利用可能なディスク容量、my.ini MySQL の basedir パス設定が間違っているなど。 ?解決策: ?1. ディスク領域に空き領域が残っているかどうかを確認し、十分なディスク領域を確保してください。 ?2. my.ini の basedir などのパラメータが正しく設定されているか確認し、MySQL サービスを再起動します。
30、クエリ中に MySQL サーバーへの接続が失われました?error.:2013
?問題分析:?データベース クエリ中に MySQL サーバーへの接続が失われました。解決策: 1. プログラム内に非常に非効率なプログラム (一部のプラグインなど) がないか確認してください。プラグインをアンインストールして、サーバーが正常であるかどうかを確認してください。 2. サーバー自体がリソースを大量に消費する仮想ホストです。スペースプロバイダーは、独立ホストユーザーはサーバー管理者に連絡してサーバーが正常かどうかを確認する必要があることを確認しました。
31. 'max_allowed_packet' バイトより大きいパケットを取得しましたか?
エラー番号: 1153? 問題分析: Mantis のアップロードされた添付ファイルのサイズは調整されましたが、MySQL 構成ファイルは調整されませんでした。解決策: 1. 独立ホスト ユーザーの場合は、次のように調整してください: MySQL 構成ファイル (my.cnf または my.ini) を見つけて、[mysqld] セクションに文を追加します (存在する場合は、その値を調整するだけです)。 max_allowed_packet=10M MySQL サービスを再起動するだけですか?ここでの設定は10MBです。
以上がMySQL の一般的なエラーと解決策の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。