Mam proste pytanie. Mam tabelę sprzężenia, która ma indeks, który zapewnia, że (col 1, col 2) jest unikalny.ratowanie z Mysql2 :: Błąd
Dodaję do tej tabeli przy użyciu gem mysql2 i próbuję złapać błąd Mysql2 ::, jeśli próba spowoduje błąd duplikatu klucza. Podczas gdy otrzymuję zduplikowany kluczowy błąd, moje ciało ratunkowe nie jest wykonywane.
begin
self.foo << bar
rescue Mysql2::Error
logger.debug("#{$!}")
end
Otrzymuję następujący błąd przy wykonywaniu self.foo << bar
Mysql2 :: Błąd: Duplikat wpis '35455-6628' dla klucza 'index_foos_bars_on_foo_id_and_bar_id': INSERT INTO foos_bars
(foo_id
, bar_id
) VALUES (35455, 6628)
ALE moje oświadczenie ratunkowe nie zostało trafione! Wyjątek nie został pomyślnie uratowany. Co ja robię źle? Jeśli usunę Mysql2 :: Error i uratuje wszystko, to działa. Ale to jest zła praktyka - po prostu chcę uratować od Mysql2 :: Błąd, który w przypadku zduplikowanego wpisu.
Dzięki,
Czy można sprawdzić swój dziennik podczas ratowania wszystko i upewnić się Mysql2 :: Błąd jest dokładnie prawo kapitalizacja i wszystko co jest do wyrzucenia? – jdc
Mam zalogowany wyjątek i jest on typu Mysql2 :: Błąd – deruse