P粉7318612412023-08-29 00:12:12
私も 2 つのプログラムで同じ問題に遭遇しました。私のエラーは次のとおりです:
リーリーこの問題を解決するのに数日かかりました。さまざまなウェブサイトで言及されている多くの方法をテストしましたが、どれも機能しませんでした。最後にコードを変更して問題を解決しました。さまざまな方法を紹介し、ここでまとめます。
このエラーの解決策をインターネットで検索したところ、 少なくとも 1 人には効果のある解決策が多数あることがわかりましたが、他の人には効果がなかったという人もいます。
strong> このエラーを修正する方法がたくさんあるのはなぜですか? 通常、このエラーはサーバーへの接続に問題がある場合に発生するようです。問題の原因は、クエリ文字列が間違っているか、データベースへの接続が多すぎることが考えられます。 ですから、すべての解決策を 1 つずつ試して、諦めないことをお勧めします。以下は私がインターネットで見つけた解決策です。各解決策について、少なくとも 1 人の問題がその解決策によって解決されました。
ヒント: MySQL 設定の変更が必要なソリューションについては、次のファイルを参照してください:
/etc/mysql/my.cnf または
/etc/my.cnf (使用する Linux ディストリビューションと MySQL パッケージに応じて)
p>
C:\**ProgramData**\MySQL\MySQL Server 5.6\my.ini (Program Files ではなく ProgramData であることに注意してください)
バインドアドレスプロパティ:
bind-address プロパティのコメントを解除するか、次のいずれかの IP に変更します:
リーリー
###または###
リーリー
MySQL 構成ファイルに skip-networking
行がある場合は、行の先頭に# シンボルを追加してコメントアウトしてください。
次の行を MySQL 構成ファイルに追加します: リーリー
MySQL は 127.0.0.1
(IPv4) は認識できますが、
:::1 (
IPv6)
これは、次の 2 つの方法のいずれかを使用することで回避できます。
< /p>
127.0.0.1 を使用して、
localhost が
:::1 に変換されるのを回避します
IPv6 ではなく
IPv4 を使用するように強制します。 Linux では、これを実行する (またはこれを
/etc/profile:
に置く) ことによっても実現できます。
リーリー
MySQL サービスがファイアウォールやウイルス対策ソフトウェアによってブロックされていないことを確認してください。
Linux 上で iptables を一時的に停止します。 iptables の設定が間違っている場合、tcp パケットが mysql ポートに送信されることは許可されますが、tcp パケットが同じ接続に戻ることができなくなります。リーリー
Windows 上のウイルス対策ソフトウェアを停止します。
クエリ文字列を確認してください。接続文字列は次のようになります: リーリー
文字列にスペースが含まれていないことを確認してください。すべての接続文字列は、スペース文字を含めずに連続している必要があります。
リーリー
通常、MySQL のデフォルトのポートは 3306 です。
ユーザー名とパスワードを MySQL サーバーのものに変更することを忘れないでください。
"max_allowed_packet" は、パケットの最大数ではなく、最大パケット サイズを示す MySQL 構成ファイル内の変数です。したがって、これはこのエラーの解決には役立ちません。
リーリー
しかし、何が私の問題を解決したのでしょうか?
私の問題は、データベースに大量の SELECT があることです。接続を作成して閉じるたびに。毎回接続を閉じていますが、システムは多くの接続に直面しており、このエラーが発生します。私がやったのは、接続変数をクラス全体のパブリック (またはプライベート) 変数として定義し、コンストラクターで初期化することでした。 その後、その接続を使用するたびに。それは私の問題を解決し、速度を大幅に向上させました。 ####結論は# この問題を解決する簡単でユニークな方法はありません。ご自身の状況に基づいて上記の解決策を検討することをお勧めします。プログラムの開始時にこのエラーが発生し、データベースにまったく接続できない場合は、接続文字列に問題がある可能性があります。ただし、データベースとのやり取りが何度も成功した後にこのエラーが発生する場合は、接続数に問題がある可能性があるため、「wait_timeout」およびその他の MySQL 設定を変更するか、コードを書き直して接続数を減らすことを検討してください。