【发布时间】:2011-07-01 13:31:14
【问题描述】:
我在 Ubuntu 10.04 LTS 虚拟机上运行带有 Node-Mysql 的 Node.js 4.1。但是,我遇到了一些奇怪的问题,我不确定是什么原因造成的。
我有时无法连接到数据库,但有时它工作正常。当我无法连接时,我会在 mysql 端的连接中看到连接弹出窗口,用户为“未经身份验证”,状态为“从网络读取”,但它在几秒钟后消失。 .connect() 回调永远不会触发,我不确定从这里去哪里。
我正在使用从主机到 vm 的端口转发,SSH 为 22,http 请求为 80,但除此之外一切正常。 mysql 上的主机显示为主机,而不是虚拟机,尽管即使成功连接也是如此。
不确定意义,但连接在 VM 上的 TIME_WAIT 中保持,并且本地地址:端口与 MySQL 的不同,对于成功的连接也是如此。
【问题讨论】:
-
不是你的问题的答案,但为了提供更好的数据库连接,我使用了 node-mysql-native 插件。我没有使用他们的 createTCPConnection 方法,而是创建了自己的 TCP 套接字,手动包含他们的 SocketClient 库并调用 new SocketClient(my_socket);然后我可以自己处理套接字问题。