gpt4 book ai didi

ruby-on-rails - 无法在 Rails 中捕获 Mysql2::Error

转载 作者:太空宇宙 更新时间:2023-11-03 16:05:16 27 4
gpt4 key购买 nike

目前正在测试以下代码:

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) 数据库是否可用。如果连接不起作用,则会抛出一个 Error,因此我将代码放在 rescue block 中。不幸的是,即使我使用 rescue Exception,据我所知,这是不建议的,我仍然在浏览器中收到 Mysql2::Error 消息(我也尝试过 rescue Mysql2:Error,没有效果。

rescue 中重复的错误日志记录是额外尝试获取额外信息以进行处理,但到目前为止没有任何效果。有人知道如何捕捉这个错误吗?

更新:此外,对于其他上下文,在当前未运行 MySQL 的情况下测试代码(条件是数据库服务器已关闭),取回以下内容:

Mysql2::ErrorCan't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)

考虑到服务器已关闭,这有部分意义,但我仍然不明白为什么它没有挽救错误。

最佳答案

rescue 没有捕捉到 Mysql2::Error 的原因是错误不是来自 ActiveRecord::Base 代码,而是 Rails 抛出错误,因为它无法连接到它期望的 MySQL 服务器(我已将其关闭以测试上述代码)。

关于ruby-on-rails - 无法在 Rails 中捕获 Mysql2::Error,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15298035/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com