加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby-on-rails – 从Mysql2 :: Error中救出

发布时间:2020-12-16 20:25:25 所属栏目:百科 来源:网络整理
导读:我有一个简单的问题.我有一个连接表,它有一个索引,确保(col 1,col 2)是唯一的. 我正在使用mysql2 gem添加到该表中,如果尝试导致重复的键错误,我试图捕获Mysql2 :: Error.当我得到重复键错误时,我的救援机构没有被执行. begin self.foo barrescue Mysql2::Err
我有一个简单的问题.我有一个连接表,它有一个索引,确保(col 1,col 2)是唯一的.

我正在使用mysql2 gem添加到该表中,如果尝试导致重复的键错误,我试图捕获Mysql2 :: Error.当我得到重复键错误时,我的救援机构没有被执行.

begin
  self.foo << bar
rescue Mysql2::Error
  logger.debug("#{$!}")
end

执行self.foo<<<<酒吧 Mysql2 :: Error:键’index_foos_bars_on_foo_id_and_bar_id’的重复条目’35455-6628’:INSERT INTO foos_bars(foo_id,bar_id)VALUES(35455,6628) 但是我的救援声明没有被击中!这个例外是不能被成功救出的.我究竟做错了什么?如果我删除Mysql2 :: Error并抢救一切,那么它的工作.但这是不好的做法 – 我只想从Mysql2 :: Error中拯救一次,如果是重复的条目. 谢谢,

解决方法

Mysql2 :: Error现在包装在另一个异常类中.将您的代码更改为:
begin
  self.foo << bar
rescue Exception => e
  logger.debug "#{e.class}"
end

…你会看到需要拯救的真正的异常类.

编辑:在这种情况下,它似乎是ActiveRecord :: RecordNotUnique

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读