我有一个简单的问题。我有一个联接表,它具有确保(col 1, col 2)唯一性的索引。
我正在使用mysql2 gem添加到该表中,并尝试捕获Mysql2 :: Error,如果尝试导致重复键错误。虽然我收到了重复键错误,但我的rescue代码块没有被执行。
begin
self.foo << bar
rescue Mysql2::Error
logger.debug("#{$!}")
end
执行self.foo << bar
时出现以下错误:
Mysql2::Error:插入到foos_bars
中时,由于键'index_foos_bars_on_foo_id_and_bar_id'上存在重复条目'35455-6628'而无法完成插入操作。
但是我的异常处理语句并没有执行!异常没有被成功捕获。我做错了什么?如果我删除Mysql2 :: Error并将其全部放在一个大的异常处理语句里,那么就可以正常工作。但那是不好的实践 - 我只想从Mysql2 :: Error中恢复,在遇到重复条目时。
谢谢!