2

私は odbc を使って mysql とやり取りしています。次のコードで odbc を開始します。

ConnectString = "Driver={MySQL ODBC 5.1 Driver};Server=localhost;Database=mydb; User=userdb;Password=pwddb;Option=3;",case odbc:connect(ConnectString, [{scrollable_cursors,off}]) of ...    

非アクティブ状態が 8 時間 (多かれ少なかれ) 続くと、odbc がクラッシュします。

=CRASH REPORT==== 22-Jun-2012::02:09:27 ===   crasher:
    initial call: odbc:init/1
    pid: <0.113.0>
    registered_name: []
    exception exit: {stopped,{'EXIT',<0.108.0>,killed}}
      in function  gen_server:terminate/6 (gen_server.erl, line 737)
    ancestors: [odbc_sup,<0.111.0>]
    messages: [{'EXIT',#Port<0.967>,normal}]
    links: [<0.112.0>]
    dictionary: []
    trap_exit: true
    status: running
    heap_size: 377
    stack_size: 24
    reductions: 2237   neighbours:

時間制限のある接続ですか?

4

1 に答える 1

4

Mysqlには、クライアントが何かを行うのをサーバーが待機する時間を制御する変数wait_timeoutがあります。デフォルト値は 28800 秒です。ちなみに、28800 秒は 8 時間なので、サーバー構成でそれを確認し、より大きな値に設定することをお勧めします。

それ以外の場合は、ワーカーを終了させ、スーパーバイザーに通常どおり再起動させる必要があります。または (gen_server または gen_fsm を使用している場合) タイムアウトを設定してクエリまたは ping を発行し、約 1 時間ごとに接続を維持してワーカーを維持します。

一番!

于 2012-06-22T23:12:28.507 に答える