J'ai une question simple. J'ai une table de jointure qui a un index qui s'assure que (col 1, col 2) est unique.rescatant de Mysql2 :: Erreur
J'ajoute à cette table en utilisant mysql2 gem et j'essaie d'attraper le Mysql2 :: Error si la tentative entraîne une erreur de clé en double. Pendant que je reçois l'erreur de clé en double, mon corps de secours n'est pas en cours d'exécution.
begin
self.foo << bar
rescue Mysql2::Error
logger.debug("#{$!}")
end
Je reçois l'erreur suivante lors de l'exécution self.foo << bar
mysql2 :: Erreur: entrée en double '35455-6628' pour la touche 'index_foos_bars_on_foo_id_and_bar_id': INSERT INTO foos_bars
(foo_id
, bar_id
) VALUES (35455, 6628)
MAIS ma déclaration de secours n'est pas touchée! L'exception n'est pas sauvée avec succès. Qu'est-ce que je fais mal? Si je supprime Mysql2 :: Error et sauvetage pour tout, alors cela fonctionne. Mais c'est une mauvaise pratique - je veux juste sauver de Mysql2 :: Error qui dans le cas d'une entrée en double.
Merci,
Avez-vous vérifié votre journal lorsque vous sauvons tout et fait en sorte mysql2 :: erreur est exactement la capitalisation droite et tout pour ce qui est jeté? – jdc
J'ai enregistré l'exception et il est de type Mysql2 :: Erreur – deruse