aboutsummaryrefslogtreecommitdiffstats
path: root/activerecord/lib/active_record/tasks/mysql_database_tasks.rb
diff options
context:
space:
mode:
authorCarlos Antonio da Silva <carlosantoniodasilva@gmail.com>2013-01-09 00:58:23 -0200
committerCarlos Antonio da Silva <carlosantoniodasilva@gmail.com>2013-01-12 09:28:13 -0200
commit9b636dcf53e4ac410186a720d5bef783fc8648c4 (patch)
tree4eb46d9fbc6c85cdcd29028d6d6853957a910f7f /activerecord/lib/active_record/tasks/mysql_database_tasks.rb
parentc1d722558ee2bd373ca4768c48b8ae944e1bdb05 (diff)
downloadrails-9b636dcf53e4ac410186a720d5bef783fc8648c4.tar.gz
rails-9b636dcf53e4ac410186a720d5bef783fc8648c4.tar.bz2
rails-9b636dcf53e4ac410186a720d5bef783fc8648c4.zip
Bring back "database already exists" messages when running rake tasks
When running tasks such "rake db:setup", instead of showing messages like "db_development already exists", it was showing a big stack trace and a message "Couldn't create database for ..." with the configuration options, a very confusing message with a big trace. This brings back the functionality present in 3-2, showing the same message.
Diffstat (limited to 'activerecord/lib/active_record/tasks/mysql_database_tasks.rb')
-rw-r--r--activerecord/lib/active_record/tasks/mysql_database_tasks.rb18
1 files changed, 9 insertions, 9 deletions
diff --git a/activerecord/lib/active_record/tasks/mysql_database_tasks.rb b/activerecord/lib/active_record/tasks/mysql_database_tasks.rb
index 3d27c97254..3ae5aa2cea 100644
--- a/activerecord/lib/active_record/tasks/mysql_database_tasks.rb
+++ b/activerecord/lib/active_record/tasks/mysql_database_tasks.rb
@@ -24,10 +24,13 @@ module ActiveRecord
connection.create_database configuration['database'], creation_options
connection.execute grant_statement.gsub(/\s+/, ' ').strip
establish_connection configuration
- rescue error_class => error
- $stderr.puts error.error
- $stderr.puts "Couldn't create database for #{configuration.inspect}, #{creation_options.inspect}"
- $stderr.puts "(If you set the charset manually, make sure you have a matching collation)" if configuration['encoding']
+ rescue error_class, ActiveRecord::StatementInvalid => error
+ if /database exists/ === error.message
+ raise DatabaseAlreadyExists
+ else
+ $stderr.puts "Couldn't create database for #{configuration.inspect}, #{creation_options.inspect}"
+ $stderr.puts "(If you set the charset manually, make sure you have a matching collation)" if configuration['encoding']
+ end
end
def drop
@@ -87,14 +90,11 @@ module ActiveRecord
end
def error_class
- case configuration['adapter']
- when /jdbc/
+ if configuration['adapter'] =~ /jdbc/
require 'active_record/railties/jdbcmysql_error'
ArJdbcMySQL::Error
- when /mysql2/
- Mysql2::Error
else
- Mysql::Error
+ defined?(Mysql2) ? Mysql2::Error : Mysql::Error
end
end