aboutsummaryrefslogtreecommitdiffstats
path: root/activerecord/lib/active_record/connection_adapters/abstract_mysql_adapter.rb
diff options
context:
space:
mode:
authorRyuta Kamizono <kamipo@gmail.com>2016-06-21 00:38:48 +0900
committerRyuta Kamizono <kamipo@gmail.com>2016-12-06 16:51:20 +0900
commitb270bc4ad021f051214420de1278627b1924b3b3 (patch)
tree2e977be2166a36858fd9fc657baebac8c934fbf8 /activerecord/lib/active_record/connection_adapters/abstract_mysql_adapter.rb
parente10617303475488974fbe635d427f793faeb3f05 (diff)
downloadrails-b270bc4ad021f051214420de1278627b1924b3b3.tar.gz
rails-b270bc4ad021f051214420de1278627b1924b3b3.tar.bz2
rails-b270bc4ad021f051214420de1278627b1924b3b3.zip
Translate NOT NULL violation to the specific exception
Raise `ActiveRecord::NotNullViolation` when a record cannot be inserted or updated because it would violate a not null constraint.
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.rb4
1 files changed, 4 insertions, 0 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 b600fa5785..0e4bc1afcb 100644
--- a/activerecord/lib/active_record/connection_adapters/abstract_mysql_adapter.rb
+++ b/activerecord/lib/active_record/connection_adapters/abstract_mysql_adapter.rb
@@ -734,6 +734,8 @@ module ActiveRecord
# See https://dev.mysql.com/doc/refman/5.7/en/error-messages-server.html
ER_DUP_ENTRY = 1062
+ ER_NOT_NULL_VIOLATION = 1048
+ ER_DO_NOT_HAVE_DEFAULT = 1364
ER_NO_REFERENCED_ROW_2 = 1452
ER_DATA_TOO_LONG = 1406
ER_LOCK_DEADLOCK = 1213
@@ -756,6 +758,8 @@ module ActiveRecord
end
when ER_DATA_TOO_LONG
ValueTooLong.new(message)
+ when ER_NOT_NULL_VIOLATION, ER_DO_NOT_HAVE_DEFAULT
+ NotNullViolation.new(message)
when ER_LOCK_DEADLOCK
Deadlocked.new(message)
else