From 53a3eaa8603cf6e7a3c007f327fe5d3bb68de1ee Mon Sep 17 00:00:00 2001 From: Michael Schuerig Date: Sun, 5 Apr 2009 01:19:29 +0200 Subject: Translate adapter errors that indicate a violated uniqueness constraint to ActiveRecord::RecordNotUnique exception derived from ActiveReecord::StatementInvalid. Signed-off-by: Michael Koziarski --- .../lib/active_record/connection_adapters/mysql_adapter.rb | 11 +++++++++++ 1 file changed, 11 insertions(+) (limited to 'activerecord/lib/active_record/connection_adapters/mysql_adapter.rb') diff --git a/activerecord/lib/active_record/connection_adapters/mysql_adapter.rb b/activerecord/lib/active_record/connection_adapters/mysql_adapter.rb index d5536e4d67..59bf01e774 100644 --- a/activerecord/lib/active_record/connection_adapters/mysql_adapter.rb +++ b/activerecord/lib/active_record/connection_adapters/mysql_adapter.rb @@ -563,6 +563,17 @@ module ActiveRecord where_sql end + protected + + def translate_exception(exception, message) + case exception.errno + when 1062 + RecordNotUnique.new(message) + else + super + end + end + private def connect encoding = @config[:encoding] -- cgit v1.2.3 From 00a5fd3d18ac908af688c5944922cf69c56e850b Mon Sep 17 00:00:00 2001 From: Michael Schuerig Date: Sun, 5 Apr 2009 01:42:21 +0200 Subject: Translate foreign key violations to ActiveRecord::InvalidForeignKey exceptions. Signed-off-by: Michael Koziarski --- activerecord/lib/active_record/connection_adapters/mysql_adapter.rb | 2 ++ 1 file changed, 2 insertions(+) (limited to 'activerecord/lib/active_record/connection_adapters/mysql_adapter.rb') diff --git a/activerecord/lib/active_record/connection_adapters/mysql_adapter.rb b/activerecord/lib/active_record/connection_adapters/mysql_adapter.rb index 59bf01e774..ae065e6bc1 100644 --- a/activerecord/lib/active_record/connection_adapters/mysql_adapter.rb +++ b/activerecord/lib/active_record/connection_adapters/mysql_adapter.rb @@ -569,6 +569,8 @@ module ActiveRecord case exception.errno when 1062 RecordNotUnique.new(message) + when 1452 + InvalidForeignKey.new(message) else super end -- cgit v1.2.3 From b5dfdc714fab7d2836e0a979ca88b4a17db9ec06 Mon Sep 17 00:00:00 2001 From: Michael Koziarski Date: Fri, 26 Jun 2009 16:59:27 +1200 Subject: Make sure the wrapped exceptions also have the original exception available. [#2419 state:committed] --- activerecord/lib/active_record/connection_adapters/mysql_adapter.rb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'activerecord/lib/active_record/connection_adapters/mysql_adapter.rb') diff --git a/activerecord/lib/active_record/connection_adapters/mysql_adapter.rb b/activerecord/lib/active_record/connection_adapters/mysql_adapter.rb index ae065e6bc1..83cb9cff15 100644 --- a/activerecord/lib/active_record/connection_adapters/mysql_adapter.rb +++ b/activerecord/lib/active_record/connection_adapters/mysql_adapter.rb @@ -568,9 +568,9 @@ module ActiveRecord def translate_exception(exception, message) case exception.errno when 1062 - RecordNotUnique.new(message) + RecordNotUnique.new(message, exception) when 1452 - InvalidForeignKey.new(message) + InvalidForeignKey.new(message, exception) else super end -- cgit v1.2.3