目前正在测试以下代码:
def db_check
begin
schema_call = ActiveRecord::Base.establish_connection(
:adapter => 'mysql2',
:host => 'localhost',
:database => 'dev_db',
:username => 'dev_user',
:password => 'dev_pw').connection.execute("SELECT * FROM schema_migrations LIMIT 1")
if schema_call
render :status => 200, :file => "public/success.html"
else
render :status => 500, :file => "public/query_fail.html"
end
rescue Exception => e
puts "#{e.class} ;; #{e.message}"
logger.debug "#{e.class}"
render :status => 500, :file => "public/500.html"
end
end
最终目标是调用 MySQL 服务器以查看 1) 服务器是否仍在运行以及 2) 数据库是否可用。如果连接不起作用,则会引发错误,因此我将代码放在一个rescue
块中。不幸的是,即使我使用rescue Exception
,我知道被建议不要使用,我仍然在浏览器中收到一条Mysql2::Error消息(我也尝试了 rescue Mysql2:Error
,但没有效果)。
错误记录的重复rescue
是额外尝试获取更多信息以使用,但到目前为止没有任何效果。任何人都知道如何捕捉这个错误?
更新:另外,对于其他上下文,使用当前未运行的 MySQL 测试代码(如果数据库服务器关闭的条件),请返回以下内容:
Mysql2::错误 无法通过套接字 '/var/run/mysqld/mysqld.sock' 连接到本地 MySQL 服务器 (2)
考虑到服务器已关闭,这具有部分意义,但我仍然不明白为什么它不能挽救错误。