Этот ответ состоит из двух частей.
Первый ответ - поле {Active}
. perldoc DBI
говорит:
АТРИБУТЫ ОБЩИЕ НА ВСЕ РУЧКИ
Эти атрибуты являются общими для всех
типы ручек DBI.
[...]
«Активен» (логический, только для чтения)
Атрибут "Active" имеет значение true, если
дескриптор объекта "активен". Это
редко используется в приложениях. Точный
значение активного является несколько расплывчатым в
момент Для базы данных справиться с этим
как правило, означает, что ручка
подключен к базе данных
(«$ dbh−> disconnect» устанавливает «Active»
выкл).
Это, вероятно, то, что вы хотите проверить.
Второй ответ заключается в том, что, хотя вы можете позвонить ping()
или проверить результат SELECT 1
, особого смысла нет. Это действительно скажет вам, подключен ли дескриптор базы данных во время этой проверки. Но что вы действительно хотите знать, так это то, подключен ли дескриптор базы данных, когда вы делаете то, что собираетесь делать дальше, верно? И всегда есть вероятность, что связь между вашей проверкой и тем, чем вы действительно хотите заниматься, прервется. Таким образом, истинный результат любого из них не является гарантией чего-либо.
Если вы проводите мониторинг состояния, то ping()
или SELECT 1
подойдет. В приложении, однако, не проверяйте действительность dbh перед тем, как что-то делать. Просто подключитесь и используйте dbh, который вы получите, и выполняйте правильную проверку ошибок на каждом этапе. Там нет замены для правильной проверки на ошибки.