Skip to content

Commit b202d5b

Browse files
Handle ER_DBACCESS_DENIED_ERROR code in mysql2 adapter
During the process of adding adapter tests to test the different types of connection errors, the ER_DBACCESS_DENIED_ERROR code was discovered to be not handled. It is the same as ER_ACCESS_DENIED_ERROR except that a database has been given. https://dev.mysql.com/doc/mysql-errors/8.0/en/server-error-reference.html#error_er_dbaccess_denied_error Co-authored-by: Adrianna Chang <[email protected]>
1 parent 6be41ad commit b202d5b

File tree

1 file changed

+9
-7
lines changed

1 file changed

+9
-7
lines changed

activerecord/lib/active_record/connection_adapters/mysql2_adapter.rb

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -21,10 +21,11 @@ def mysql2_connection(config)
2121
module ConnectionAdapters
2222
# = Active Record MySQL2 Adapter
2323
class Mysql2Adapter < AbstractMysqlAdapter
24-
ER_BAD_DB_ERROR = 1049
25-
ER_ACCESS_DENIED_ERROR = 1045
26-
ER_CONN_HOST_ERROR = 2003
27-
ER_UNKNOWN_HOST_ERROR = 2005
24+
ER_BAD_DB_ERROR = 1049
25+
ER_DBACCESS_DENIED_ERROR = 1044
26+
ER_ACCESS_DENIED_ERROR = 1045
27+
ER_CONN_HOST_ERROR = 2003
28+
ER_UNKNOWN_HOST_ERROR = 2005
2829

2930
ADAPTER_NAME = "Mysql2"
3031

@@ -34,11 +35,12 @@ class << self
3435
def new_client(config)
3536
::Mysql2::Client.new(config)
3637
rescue ::Mysql2::Error => error
37-
if error.error_number == ConnectionAdapters::Mysql2Adapter::ER_BAD_DB_ERROR
38+
case error.error_number
39+
when ER_BAD_DB_ERROR
3840
raise ActiveRecord::NoDatabaseError.db_error(config[:database])
39-
elsif error.error_number == ConnectionAdapters::Mysql2Adapter::ER_ACCESS_DENIED_ERROR
41+
when ER_DBACCESS_DENIED_ERROR, ER_ACCESS_DENIED_ERROR
4042
raise ActiveRecord::DatabaseConnectionError.username_error(config[:username])
41-
elsif [ConnectionAdapters::Mysql2Adapter::ER_CONN_HOST_ERROR, ConnectionAdapters::Mysql2Adapter::ER_UNKNOWN_HOST_ERROR].include?(error.error_number)
43+
when ER_CONN_HOST_ERROR, ER_UNKNOWN_HOST_ERROR
4244
raise ActiveRecord::DatabaseConnectionError.hostname_error(config[:host])
4345
else
4446
raise ActiveRecord::ConnectionNotEstablished, error.message

0 commit comments

Comments
 (0)