Java中是否有特定的方法可以检查MySQL服务器是否还活着?
答案 0 :(得分:27)
标准MySQL JDBC连接器ConnectorJ具有轻量级ping。来自the docs:
MySQL Connector / J能够对服务器执行轻量级ping,以验证连接。在负载平衡连接的情况下,这是针对保留的所有活动池内部连接执行的。这对使用连接池的Java应用程序很有用,因为池可以使用此功能来验证连接。
基本上,请确保您的“ping”查询以完全文本/* ping */
开头。 the linked docs above中的详细信息。这使您可以利用ping机制,而不是进行(略微)较重的操作。
所以基本上,做查询:
/* ping */ SELECT 1
...将触发ping机制,而不是实际执行SELECT 1
的“工作”。
提醒您,如果您正在讨论检查您当前未连接的MySQL服务器,只需连接到它的行为即可验证它是否在那里并做出响应。以上主要是关于检查现有连接是否仍然有效。
答案 1 :(得分:8)
这取决于您使用什么方法连接到数据库。某些驱动程序(例如MySQL Connector/J)确实有ping命令:
/**
* Detect if the connection is still good by sending a ping command
* to the server.
*
* @throws SQLException
* if the ping fails
*/
public abstract void ping() throws SQLException;
如果你的接口不支持这个,那么一个总是有效的简单方法就是像往常一样连接到数据库并执行以下查询:
SELECT 1
您应该返回一个包含单行的结果集,其中包含单个列,其值为1.如果成功,则表明您的MySQL正在运行。
答案 2 :(得分:7)
假设您使用的是Java 6或更高版本,则可以使用标准JDBC方法Connection.isValid(int timeoutInSecs)。深入研究MySQL Connector / J源代码,实际实现使用com.mysql.jdbc.ConnectionImpl.pingInternal()向DB发送一个简单的ping数据包,只要返回有效的响应就返回true。