aboutsummaryrefslogtreecommitdiffstats
path: root/activerecord/lib/active_record/connection_adapters/abstract_mysql_adapter.rb
diff options
context:
space:
mode:
authorErol Fornoles <erol.fornoles@gmail.com>2016-05-21 19:25:01 +0800
committerErol Fornoles <erol.fornoles@gmail.com>2016-05-21 21:51:52 +0800
commit4d525a6f7569d1c90811f6d5e326321fb6f25015 (patch)
tree5a0b57e7afcf884cf0b9b43eb49e948c7896f1ea /activerecord/lib/active_record/connection_adapters/abstract_mysql_adapter.rb
parent694cbbf801e46d7ec533ece4637412838f02723e (diff)
downloadrails-4d525a6f7569d1c90811f6d5e326321fb6f25015.tar.gz
rails-4d525a6f7569d1c90811f6d5e326321fb6f25015.tar.bz2
rails-4d525a6f7569d1c90811f6d5e326321fb6f25015.zip
Add AR::TransactionSerializationError for transaction serialization failures or deadlocks
Diffstat (limited to 'activerecord/lib/active_record/connection_adapters/abstract_mysql_adapter.rb')
-rw-r--r--activerecord/lib/active_record/connection_adapters/abstract_mysql_adapter.rb14
1 files changed, 11 insertions, 3 deletions
diff --git a/activerecord/lib/active_record/connection_adapters/abstract_mysql_adapter.rb b/activerecord/lib/active_record/connection_adapters/abstract_mysql_adapter.rb
index 0f565277e3..44b4b547f3 100644
--- a/activerecord/lib/active_record/connection_adapters/abstract_mysql_adapter.rb
+++ b/activerecord/lib/active_record/connection_adapters/abstract_mysql_adapter.rb
@@ -727,14 +727,22 @@ module ActiveRecord
column_names.map {|name| quote_column_name(name) + option_strings[name]}
end
+ # See https://dev.mysql.com/doc/refman/5.7/en/error-messages-server.html
+ ER_DUP_ENTRY = 1062
+ ER_NO_REFERENCED_ROW_2 = 1452
+ ER_DATA_TOO_LONG = 1406
+ ER_LOCK_DEADLOCK = 1213
+
def translate_exception(exception, message)
case error_number(exception)
- when 1062
+ when ER_DUP_ENTRY
RecordNotUnique.new(message)
- when 1452
+ when ER_NO_REFERENCED_ROW_2
InvalidForeignKey.new(message)
- when 1406
+ when ER_DATA_TOO_LONG
ValueTooLong.new(message)
+ when ER_LOCK_DEADLOCK
+ TransactionSerializationError.new(message)
else
super
end