Pythonを介して接続するときにデフォルトのMySQL接続タイムアウトを変更する方法

StackOverflow https://stackoverflow.com/questions/14726789

  •  07-03-2022
  •  | 
  •  

質問

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')

パラメータ意味(ナビゲータのMySQL Workbenchから取得:インスタンス>オプションファイル>タブ「ネットワーク」>「タイムアウト設定」)

  • connect_timeout: :「Bad Handshake」で応答する前にMySQLDサーバーが接続パケットを待機する秒数
  • interactive_timeout 閉じる前に、サーバーがインタラクティブ接続でのアクティビティを待つ秒数
  • wait_timeout. 閉じる前に、サーバーが接続上のアクティビティを待つ秒数

BTW:28800秒は8時間、10時間の実行時間で、これらの値は実際には高くなるはずです。

他のヒント

MySQL設定ファイルのデフォルト値を変更します(オプション connect_timeoutmysqld. セクション) -

[mysqld]
connect_timeout=100

このファイルにアクセスできない場合は、このステートメントを使用してこの値を設定できます。

SET GLOBAL connect_timeout=100;

私はこれが古い質問であることを知っていますが、レコードのためだけにこれも適切な接続オプションを引数として渡すことによっても行うことができます。 _mysql.connect 電話。例えば、

con = _mysql.connect(host='localhost', user='dell-pc', passwd='', db='test',
          connect_timeout=1000)

キーワードパラメータ(Host、Passwdなど)の使用に注意してください。彼らはあなたのコードの読みやすさを向上させます。

あなたが渡すことができるさまざまな引数についての詳細については _mysql.connect, 、 見る MySQLDB APIのドキュメント

MAX_EXECUTION_TIMEも長い実行クエリの重要なパラメータです.MySQL 5.7以降では機能します。

現在の値を確認してください

SELECT @@GLOBAL.MAX_EXECUTION_TIME, @@SESSION.MAX_EXECUTION_TIME;

それからあなたのニーズに応じてそれを設定してください。

SET SESSION MAX_EXECUTION_TIME=2000;
SET GLOBAL MAX_EXECUTION_TIME=2000;
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top