@@ -739,6 +739,8 @@ def translate_exception(exception, message:, sql:, binds:)
739739
740740 # TODO: Can we base these on an error code of some kind?
741741 case exception . message
742+ when /could not create unique index/
743+ ::ActiveRecord ::RecordNotUnique . new ( message , sql : sql , binds : binds , connection_pool : @pool )
742744 when /duplicate key value violates unique constraint/
743745 ::ActiveRecord ::RecordNotUnique . new ( message , sql : sql , binds : binds )
744746 when /violates not-null constraint/
@@ -757,7 +759,9 @@ def translate_exception(exception, message:, sql:, binds:)
757759 ::ActiveRecord ::LockWaitTimeout . new ( message , sql : sql , binds : binds )
758760 when /canceling statement/ # This needs to come after lock timeout because the lock timeout message also contains "canceling statement"
759761 ::ActiveRecord ::QueryCanceled . new ( message , sql : sql , binds : binds )
760- when /relation "animals" does not exist/i
762+ when /relation .* does not exist/i
763+ ::ActiveRecord ::StatementInvalid . new ( message , sql : sql , binds : binds , connection_pool : @pool )
764+ when /syntax error at or near/i
761765 ::ActiveRecord ::StatementInvalid . new ( message , sql : sql , binds : binds , connection_pool : @pool )
762766 else
763767 super
0 commit comments