1. ホーム
  2. python

[解決済み] Pythonで接続する場合、Mysqlのデフォルトの接続タイムアウトを変更するには?

2023-07-06 04:33:47

質問

python を使って mysql データベースに接続しました。 con = _mysql.connect('localhost', 'dell-pc', '', 'test') 私が書いたプログラムは、フルで実行すると10時間くらいかかるんです。実際、私はコーパスから明確な単語を読み取ろうとしています。 読み取りが終了すると、タイムアウトエラーが発生しました。

Mysqlのデフォルトのタイムアウトを確認したところ、以下のようなものでした。

+----------------------------+----------+
| Variable_name              | Value    |
+----------------------------+----------+
| connect_timeout            | 10       |
| delayed_insert_timeout     | 300      |
| innodb_lock_wait_timeout   | 50       |
| innodb_rollback_on_timeout | OFF      |
| interactive_timeout        | 28800    |
| lock_wait_timeout          | 31536000 |
| net_read_timeout           | 30       |
| net_write_timeout          | 60       |
| slave_net_timeout          | 3600     |
| wait_timeout               | 28800    |
+----------------------------+----------+

デフォルトのタイムアウトを変更するにはどうすればよいですか?

どのように解決するのですか?

してください。

con.query('SET GLOBAL connect_timeout=28800')
con.query('SET GLOBAL interactive_timeout=28800')
con.query('SET GLOBAL wait_timeout=28800')

パラメータの意味(NavigatorのMySQL Workbenchから引用。インスタンス > オプション ファイル > タブ "Networking" > セクション "Timeout Settings" から取得)

  • connect_timeout : mysqld サーバーが 'Bad handshake' で応答する前に接続パケットを待つ秒数
  • 対話型タイムアウト インタラクティブ接続を閉じる前に、サーバーがその接続での活動を待つ秒数
  • wait_timeout 接続を閉じる前に、サーバーがその接続のアクティビティを待つ秒数

ちなみに、28800秒は8時間なので、実行時間が10時間の場合、これらの値は実際にはもっと高くなるはずです。