MySQL工作台在空闲时丢弃连接



我在OS X 10.9.5上使用MySQL Workbench 6.3来管理几个云数据库(托管在Rackspace上),我得到以下问题:

不活动5分钟后,出现以下问题:

  • 我无法运行任何查询(错误2013:在查询期间失去与MySQL服务器的连接)
  • 当试图浏览表在我的数据库,我得到的消息,如"表无法提取","视图无法提取",等等
  • 当刷新左面板时,我得到一个"错误代码:2006 MySQL server has gone away"

基本上连接就没有了。

这真的很烦人,因为它发生在仅仅5分钟的不活动之后。因此,我需要关闭连接并每次重新打开它。

我也试过这个:MySQL工作台:如何保持连接存活,这没有改变任何东西。在Workbench Preferences选项卡中,我有以下设置:

  • DBMS连接保持活动间隔(秒):600
  • DBMS连接读取超时时间(秒):600
  • 数据库连接超时时间(秒):60

注意,这个问题恰好在5分钟不活动后发生 !如果我在4'59分钟的间隔内运行两个查询,它工作得很好。我的同事在他们的工作台上连接到相同的数据库也没有这个问题。

有人有解决办法吗?

点击编辑->首选项-> SQL编辑器,你会看到:

DBMS connection keep-alive interval (in seconds): 600
DBMS connection read time out (in seconds): 600
DBMS connection time out (in seconds): 60

DBMS连接保持活动间隔表示工作台向服务器发送保持活动请求以保持连接活动的频率。

由于5分钟== 300秒,设置DBMS连接保持连接间隔<300(例如250)

表示"每250秒发送一次keep-alive请求"。单击OK。

然后退出MySQL Workbench并重新启动它以使更改生效。

如果您使用标准的TCP/IP通过SSH连接方法,那么配置SSH ServerAliveInterval也会很有帮助。

此错误存在于6.0以上的所有版本的MySQL Workbench中(此时:6.1,6.2和6.3有此错误)。

降级到MySQL Workbench 6.0。X似乎是解决这个问题的唯一方法。

下载MySQL Workbench 6.0。x: http://dev.mysql.com/downloads/workbench/6.0.html

FWIW:根据Kosh的建议,我更改了如下设置,似乎已经消除了在Ubuntu 16上运行WB 6.3的问题:

DBMS connection keep-alive interval (in seconds): 60
DBMS connection read time out (in seconds): 60
DBMS connection time out (in seconds): 30

这可能是矫枉过正,但它有效。

在Windows Azure上托管的Ubuntu 14.04上将tcp_keepalive_time设置为120秒

默认情况下,Azure负载平衡器上的TCP保持存活时间为240秒,如果Azure系统上的TCP保持存活时间大于此值,则可能导致它静默地丢弃连接。您应该将tcp_keepalive_time设置为120以改善此问题。

  1. 查看tcp_keepalive_time<标题>猫/proc/sys/net/ipv4/tcp_keepalive_time

7200(默认2小时)

2。2小时至120秒。

sudo sysctl -w net.ipv4.tcp_keepalive_time=120

net.ipv4。Tcp_keepalive_time = 120

  • 修改后重新检查。<标题>猫/proc/sys/net/ipv4/tcp_keepalive_time
  • 120年

    4。将sysctl文件中的值设置为即使在重新启动后也保持该值。

    <标题> vi/etc/sysctl.conf h1> i键(插入文件)net.ipv4。tcp_keepalive_time = 120(在文件底部添加这一行):wq(保存并退出)

    这让我抓狂了好几个月。我连接的是Hostgator服务器。我连接并编辑一个表只有10秒左右的连接后,然后我做,说,一个表提交和表将改变为"只读"的消息,鼠标在"无法确定一个唯一的行标识符(MySQL服务器已经离开)或"(在查询期间失去连接到MySQL服务器)。

    解决方案是,按照这里的其他建议,减少keep-alive设置。在我的情况下,它必须降至10秒(显然,Hostgator对带宽相当吝啬!)

    首先,我尝试减少SSH KeepAlive(在Preferences/Others/Timeouts下),但这不起作用。

    的技巧是减少DBMS connection keep-alive interval(在Preferences/SQL Editor/MySQL Session)。我不得不把它一直降到10秒,直到连接保持稳定。您的主机可能不一样。

    最后,没有更多的"刷新所有",等待,做一些事情,冲洗和重复。

    Kosh Very的答案不适合我,所以我找到了一个不同的解决方案:

    修改my.ini文件中的max_allowed_packet。(C:ProgramDataMySQLMySQL Server 5.6)

    max_allowed_packet = 16 m

    现在重新启动MySQL服务,一旦你完成。

    Kosh Very是正确答案。对于那些不能让它工作的人,这里有另一个解决方案:

    当我需要修改一个巨大的表(删除或添加列等)时,是通过终端运行查询:

    1. Connect: mysql -u myusername -p

    2. 请输入密码

    3. 运行所需的耗时查询。注意:在终端中编写查询需要每个查询都有一个结束分号(;)。示例:ALTER TABLE mydb.mytable DROP COLUMN mycol;

    相关内容

    • 没有找到相关文章

    最新更新