diff options
author | John Hawthorn <john@hawthorn.email> | 2019-07-25 14:54:44 -0700 |
---|---|---|
committer | GitHub <noreply@github.com> | 2019-07-25 14:54:44 -0700 |
commit | ec7aa03c984a0daeead4f71c7189d241139a6770 (patch) | |
tree | f93166db0cf49e76f8524c5bd1093b186091cb25 | |
parent | 04093884a1527777795ad1f17ef1c556e7db9429 (diff) | |
parent | 15c81c8ed4930574d9900a6f947d4e0ebaa82a2f (diff) | |
download | rails-ec7aa03c984a0daeead4f71c7189d241139a6770.tar.gz rails-ec7aa03c984a0daeead4f71c7189d241139a6770.tar.bz2 rails-ec7aa03c984a0daeead4f71c7189d241139a6770.zip |
Merge pull request #36766 from jhawthorn/call_connection_error_number
Use connection.error_number in MySQLDatabaseTasks
-rw-r--r-- | activerecord/lib/active_record/tasks/mysql_database_tasks.rb | 2 | ||||
-rw-r--r-- | activerecord/test/cases/tasks/mysql_rake_test.rb | 11 |
2 files changed, 9 insertions, 4 deletions
diff --git a/activerecord/lib/active_record/tasks/mysql_database_tasks.rb b/activerecord/lib/active_record/tasks/mysql_database_tasks.rb index a7e04007a9..e3efeb75b5 100644 --- a/activerecord/lib/active_record/tasks/mysql_database_tasks.rb +++ b/activerecord/lib/active_record/tasks/mysql_database_tasks.rb @@ -16,7 +16,7 @@ module ActiveRecord connection.create_database configuration["database"], creation_options establish_connection configuration rescue ActiveRecord::StatementInvalid => error - if error.cause.error_number == ER_DB_CREATE_EXISTS + if connection.error_number(error.cause) == ER_DB_CREATE_EXISTS raise DatabaseAlreadyExists else raise diff --git a/activerecord/test/cases/tasks/mysql_rake_test.rb b/activerecord/test/cases/tasks/mysql_rake_test.rb index 258132835f..ac3c5bc26e 100644 --- a/activerecord/test/cases/tasks/mysql_rake_test.rb +++ b/activerecord/test/cases/tasks/mysql_rake_test.rb @@ -7,7 +7,10 @@ if current_adapter?(:Mysql2Adapter) module ActiveRecord class MysqlDBCreateTest < ActiveRecord::TestCase def setup - @connection = Class.new { def create_database(*); end }.new + @connection = Class.new do + def create_database(*); end + def error_number(_); end + end.new @configuration = { "adapter" => "mysql2", "database" => "my-app-db" @@ -90,9 +93,11 @@ if current_adapter?(:Mysql2Adapter) with_stubbed_connection_establish_connection do ActiveRecord::Base.connection.stub( :create_database, - proc { raise ActiveRecord::Tasks::DatabaseAlreadyExists } + proc { raise ActiveRecord::StatementInvalid } ) do - ActiveRecord::Tasks::DatabaseTasks.create @configuration + ActiveRecord::Base.connection.stub(:error_number, 1007) do + ActiveRecord::Tasks::DatabaseTasks.create @configuration + end assert_equal "Database 'my-app-db' already exists\n", $stderr.string end |