ホームページ  >  記事  >  データベース  >  プログラムが mysql に接続できない場合はどうすればよいですか?

プログラムが mysql に接続できない場合はどうすればよいですか?

藏色散人
藏色散人オリジナル
2020-11-04 10:32:205515ブラウズ

プログラムが mysql に接続できない問題の解決策: 1. mysql サービスが正常かどうかを確認し、運用保守を見つけてネットワークの問題を確認します; 2. "max_allowed_pa​​cket" の値を大きくします; 3. . 「net_read_timeout」値を増やします。 ;4. 「connect_timeout」値を増やします。

プログラムが mysql に接続できない場合はどうすればよいですか?

推奨: 「mysql ビデオ チュートリアル

プログラムが接続できない問題の概要mysql

MySQL に接続できない場合、通常 4 種類のエラー レポートがあります:

1:Can't connect to MySQL server
2:Lost connection to MySQL server
3:Sorry, due to line fault, temporarily unable to browse, we are dealing with.
4:MySQL server has gone away

1: MySQL サーバーに接続できません

考えられる理由:

1、mysql サーバーが起動していません

2、ネットワークがブロックされています (iptables、selinux、ネットワークの不安定性)

対応する解決策:

1、DBA が最初に確認します mysql サービスは正常ですか?

2. mysql サービスが正常な場合は、運用保守に連絡してネットワークの問題を確認します。

2: MySQL サーバーへの接続が失われました

このようなエラー レポートが発生する可能性のある状況は 4 つあります:

1、ネットワークの問題

##2、クエリの結果セットが大きすぎます (クエリなど)クライアントによって開始された数百万の結果を返します

3 データベースに接続するときに、connect_timeout 設定時間が短すぎるため、エラーが報告されます。この理由がエラーの原因である場合は、SHOW GLOBAL STATUS を使用できます。 LIKE 'Aborted_connects' を使用して、値が増加したかどうかを確認します。

4、クエリには BLOB タイプがあり、max_allowed_pa​​cket パラメータの制限を超えています

これら 4 つの状況に対応する解決策:

1. ネットワークに問題がないか運用保守を監視します

##2. net_read_timeout 値を増やす

3, connect_timeout 値を増やす

##4, max_allowed_pa​​cket 値を増やします。

##3: 申し訳ありませんが、回線障害のため、一時的に参照できなくなりました。現在対処中です。

このエラーはネイティブの mysql エラーではなく、何も見つかりませんでした。インターネット上にも同様の情報があります。現在、このエラーが発生する状況は 3 つあります:

#1、ネットワークに問題があります

2. データベース接続が多すぎます

3. データベースのアカウントとパスワードが間違っています

4: MySQL サーバーが消えました

次の 12 の状況により、このようなエラー レポートが発生する可能性があります:

1、デフォルトの wait_timeout 値は 8 時間です。アイドル状態の接続がこの値を超えると、接続は強制終了されます。

2、dba 手動 kill

3、顧客クライアント アカウントには、mysql に接続する権限がありません。 server

4、mysql_options(..., MYSQL_OPT_READ_TIMEOUT,...) または mysql_options(..., MYSQL_OPT_WRITE_TIMEOUT,...) Function

を使用するなど、クライアントの TCP/IP 接続がタイムアウトします。

5、クライアントが自動再接続を無効にすると、

6、クエリ ステートメントが正しくありません

7、クエリ ステートメントが長すぎて、max_allowed_pa​​cket の制限を超えます

8、 1 つの挿入または置換ステートメントで更新される行が多すぎる

9、ドメイン名の解決が失敗する

10、ファイアウォールがポート 3306

をブロックする 11. スレッドが複数の子プロセスをフォークします。複数の子プロセスが接続を共有すると、エラーが報告されます

12. mysql サーバーがハングします

MySQL サーバーが消えたと報告されるエラー理由の比較 多くの場合、この問題は対処できます

1、運用保守

a、ファイアウォールルールの確認

#b、DNSサーバーに異常はないか

dの3つの観点から, php.ini で mysql に接続するためのパラメータを適切に設定します

connect_timeout、デフォルトは 60s

mysqli.reconnect、デフォルトは off

2,DBA

a, mysql サービスと接続数に異常がないことを確認します

b, 適切な wait_timeout 値を設定します

c, サーバーに適切な max_allowed_pa​​cket 値を設定します側

d、アカウントの権限が正しいことを確認します

3、開発

a、mysql

b の代わりに mysqli を使用することをお勧めします。できるだけ長い接続を使用しないようにしてください

#c,mysqli.ping() は、接続が切断された後に自動的に再接続できます。mysql.ping() は、mysql5.0.3

## 以降、自動再接続をサポートしていません。 #d. 子プロセス間でデータベース接続を共有しないでください

gamiss を例として、max_allowed_pa​​cket と timeout に関連するパラメータを見てみましょう:

>show variables like 'max_allowed_packet';
+--------------------+------------+
| Variable_name | Value |
+--------------------+------------+
| max_allowed_packet | 1073741824 |
+--------------------+------------+
>show variables like '%timeout%';
+-----------------------------+----------+
| Variable_name | Value |
+-----------------------------+----------+
| connect_timeout | 60 |
| delayed_insert_timeout | 300 |
| have_statement_timeout | YES |
| innodb_flush_log_at_timeout | 1 |
| innodb_lock_wait_timeout | 120 |
| innodb_rollback_on_timeout | OFF |
| interactive_timeout | 86400 |
| lock_wait_timeout | 31536000 |
| net_read_timeout | 120 |
| net_write_timeout | 120 |
| rpl_stop_slave_timeout | 31536000 |
| slave_net_timeout | 3600 |
| thread_pool_idle_timeout | 60 |
| wait_timeout | 86400 |
+-----------------------------+----------+

これらを見てみましょうデータベースに接続できないことに関連するタイムアウト パラメーター:

connect_timeout: in リンクを取得するとき、ハンドシェイクを待機するタイムアウト期間は、通常、デフォルトで 10 秒です。ネットワーク不良による接続の輻輳を避けるため、 , この値は適切に増やすことができます。オンライン構成は 60 秒です。

wait_timeout/interactive_timeout: connection スリープ状態を維持するためのタイムアウト。デフォルトは 28800 (8 時間)、現在は 24 時間に調整されています

net_read_timeout: サーバーがクライアントのデータ送信を待機するタイムアウト、デフォルトは 60 秒、オンラインは 120 秒

net_write_timeout: サーバーがクライアントにデータを書き込むためのタイムアウト時間、デフォルトは 60 秒、オンライン値は 120 秒です。

max_allowed_pa​​cket パラメータをもう一度見てください。max_allowed_pa​​cket のデフォルト値は 1M (1048576)、最大値は 1G (1073741824) です。現在のオンライン値はすでに上限.

上記の構成から、これらのパラメータの設定が比較的大きいことがわかります。通常の状況では、データベースはプログラムに接続できません。データベースはパラメータとは何の関係もないはずです。データベース自体の構成。この問題は別の方向から解決する必要があります。

以上がプログラムが mysql に接続できない場合はどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。