2

この質問に続いて、次のMySQLパラメータをC:\Program Files\MySQL\MySQL Server 5.5\my.ini(Linuxのmy.cfg)に設定しました。

[mysqld]
wait_timeout=2147483

Windowsを再起動した後、 SQLyogを使用して効果を確認しました。

  • SHOW SESSION VARIABLES LIKE 'wait_timeout'の結果を与えた 28800
  • SHOW GLOBAL VARIABLES LIKE 'wait_timeout'の結果を与えた2147483

どうして?新しいセッションごとに、グローバルパラメータがデフォルトとして使用されると思いました。

4

2 に答える 2

3

ボーナス回答:sqlYogのソースコードを確認しました。

これはfeature:タイムアウト設定の場合> 28800、セッションタイムアウトを28800に変更するようにハードコーディングされていCommonHelper.cppます。

3314   //Session wait_timeout3315   timeout = conn->m_strwaittimeout.GetAsUInt32();
3316 
3317   if(timeout > 28800 || timeout <= 0)
3318     conn->m_strwaittimeout.SetAs("28800");
3319 
3320   strtimeout.Sprintf("/*!40101 set @@session.wait_timeout=%s */", conn->m_strwaittimeout.GetString());
3321   mysql_options(*pmysql, MYSQL_INIT_COMMAND, strtimeout.GetString());

これはあなたが見ているものを説明しています。

于 2011-11-20T16:09:24.190 に答える
1

詳細については、 http://dev.mysql.com/doc/refman/5.0/en/server-system-variables.html#sysvar_wait_timeout を参照してください。

MySql 'wait_timeout' Global Variable vs Variableの回答も役立つ場合があります。

基本的に、これは重要なビットです。

スレッドの起動時に、クライアントのタイプに応じて (mysql_real_connect() への CLIENT_INTERACTIVE 接続オプションで定義されているように)、セッションの wait_timeout 値は、グローバルな wait_timeout 値またはグローバルな interactive_timeout 値から初期化されます。interactive_timeout も参照してください。

于 2011-11-20T10:54:40.027 に答える