Tengo una pregunta simple. Tengo una tabla de unión que tiene un índice que garantiza que (col 1, col 2) sea única.rescatando de Mysql2 :: Error
Estoy agregando a esa tabla usando la gema mysql2 y estoy intentando atrapar el Mysql2 :: Error si el intento da como resultado un error de clave duplicada. Mientras recibo el error duplicado de la llave, mi cuerpo de rescate no se está ejecutando.
begin
self.foo << bar
rescue Mysql2::Error
logger.debug("#{$!}")
end
Estoy recibiendo el siguiente error al ejecutar self.foo << bar
mysql2 :: Error: Duplicar entrada '35455 a 6628' para la llave 'index_foos_bars_on_foo_id_and_bar_id': INSERT INTO foos_bars
(foo_id
, bar_id
) VALORES (35455, 6628)
PERO mi declaración de rescate no está siendo golpeada. La excepción no se rescatará con éxito de. ¿Qué estoy haciendo mal? Si elimino Mysql2 :: Error y rescato todo, entonces funciona. Pero esa es una mala práctica: solo quiero rescatar de Mysql2 :: Error que en el caso de una entrada duplicada.
Gracias,
¿Ha comprobado su registro cuando estás rescatando todo y se aseguró mysql2 :: error es exactamente la capitalización derecha y todo por lo que está siendo lanzado? – jdc
He registrado la excepción y es del tipo Mysql2 :: Error – deruse