Подтвердить что ты не робот

Ping сервер MySQL

Существует ли конкретный метод в Java, который проверяет, жив ли сервер MySQL?

4b9b3361

Ответ 1

Предполагая, что вы работаете на Java 6 или выше, вы можете использовать стандартный метод JDBC Connection.isValid(int timeoutInSecs). Копая в источник MySQL Connector/J, фактическая реализация использует com.mysql.jdbc.ConnectionImpl.pingInternal() для отправки простого пакета ping в БД и возвращает true, пока возвращается верный ответ.

Ответ 2

Стандартный соединитель JDBC MySQL, ConnectorJ, имеет легкий пинг. Из документов:

MySQL Connector/J имеет возможность выполнять легкий ping против сервера, чтобы проверить соединение. В случае сбалансированных по нагрузке соединений это выполняется по отношению к всем активным объединенным внутренним соединениям, которые сохраняются. Это полезно для приложений Java, использующих пулы соединений, поскольку пул может использовать эту функцию для проверки соединений.

В принципе, убедитесь, что ваш запрос "ping" начинается с точно текста /* ping */. Подробности в связанных документах выше. Это позволяет вам использовать механизм pinging, а не выполнять (слегка) более тяжелую работу.

Итак, в основном, выполняя запрос:

/* ping */ SELECT 1

... запускает механизм ping, а не выполняет "работу" SELECT 1.

Имейте в виду, если вы говорите о проверке сервера MySQL, к которому вы в настоящее время не подключены, просто действие подключения к нему проверяет его там и отвечает. Вышеупомянутое в основном касается проверки того, что существующее соединение все еще действует.

Ответ 3

Это зависит от того, какой метод вы используете для подключения к базе данных. Некоторые драйверы, например 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 работает.