T.J*_*der 27
标准的MySQL JDBC连接器ConnectorJ具有轻量级ping.来自文档:
MySQL Connector/J能够对服务器执行轻量级ping,以验证连接.在负载平衡连接的情况下,这是针对保留的所有活动池内部连接执行的.这对使用连接池的Java应用程序很有用,因为池可以使用此功能来验证连接.
基本上,确保你的"平"查询开头恰好文本/* ping */.上面链接文档中的详细信息.这使您可以利用ping机制而不是(稍微)更重的操作.
所以基本上,做查询:
/* ping */ SELECT 1
Run Code Online (Sandbox Code Playgroud)
...将触发ping机制,而不是实际执行a的"工作" SELECT 1.
请注意,如果您正在讨论检查当前未连接的MySQL服务器,只需连接到它的行为即可验证它是否存在并进行响应.以上主要是检查现有连接是否仍然有效.
这取决于您使用什么方法连接到数据库.一些驱动程序,例如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;
Run Code Online (Sandbox Code Playgroud)
如果你的接口不支持这个,那么一个总是有效的简单方法是像往常一样连接到数据库并执行以下查询:
SELECT 1
Run Code Online (Sandbox Code Playgroud)
您应该返回包含单行的结果集,其中包含单个列,其值为1.如果成功,则表明MySQL正在运行.
假设您在Java 6或更高版本中运行,则可以使用标准JDBC方法Connection.isValid(int timeoutInSecs).深入研究MySQL Connector/J源代码,实际实现使用com.mysql.jdbc.ConnectionImpl.pingInternal()将简单的ping数据包发送到DB,只要返回有效的响应,就返回true.