未验证 提交 3fd5bf81 编写于 作者: Y Yuji Yaginuma 提交者: GitHub

Merge pull request #36653 from y-yagi/check_error_number_instead_of_message

MySQL: Check error number instead of a message
......@@ -8,6 +8,8 @@
module ActiveRecord
module ConnectionHandling # :nodoc:
ER_BAD_DB_ERROR = 1049
# Establishes a connection to the database that's used by all Active Record objects.
def mysql2_connection(config)
config = config.symbolize_keys
......@@ -22,7 +24,7 @@ def mysql2_connection(config)
client = Mysql2::Client.new(config)
ConnectionAdapters::Mysql2Adapter.new(client, logger, nil, config)
rescue Mysql2::Error => error
if error.message.include?("Unknown database")
if error.error_number == ER_BAD_DB_ERROR
raise ActiveRecord::NoDatabaseError
else
raise
......
......@@ -3,6 +3,8 @@
module ActiveRecord
module Tasks # :nodoc:
class MySQLDatabaseTasks # :nodoc:
ER_DB_CREATE_EXISTS = 1007
delegate :connection, :establish_connection, to: ActiveRecord::Base
def initialize(configuration)
......@@ -14,7 +16,7 @@ def create
connection.create_database configuration["database"], creation_options
establish_connection configuration
rescue ActiveRecord::StatementInvalid => error
if error.message.include?("database exists")
if error.cause.error_number == ER_DB_CREATE_EXISTS
raise DatabaseAlreadyExists
else
raise
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册