mirror of
https://github.com/rails/rails.git
synced 2022-11-09 12:12:34 -05:00
Merge pull request #40158 from rails/revert-40152-mysql-quote-connection-not-established
Revert "Raise ConnectionNotEstablished rather than StatementInvalid in Mysql2Adapter#quote_string"
This commit is contained in:
commit
3afa536c42
5 changed files with 7 additions and 20 deletions
|
@ -650,12 +650,6 @@ module ActiveRecord
|
|||
|
||||
def translate_exception(exception, message:, sql:, binds:)
|
||||
case error_number(exception)
|
||||
when nil
|
||||
if exception.message.match?(/MySQL client is not connected/i)
|
||||
ConnectionNotEstablished.new(exception)
|
||||
else
|
||||
super
|
||||
end
|
||||
when ER_DB_CREATE_EXISTS
|
||||
DatabaseAlreadyExists.new(message, sql: sql, binds: binds)
|
||||
when ER_DUP_ENTRY
|
||||
|
|
|
@ -478,12 +478,6 @@ module ActiveRecord
|
|||
return exception unless exception.respond_to?(:result)
|
||||
|
||||
case exception.result.try(:error_field, PG::PG_DIAG_SQLSTATE)
|
||||
when nil
|
||||
if exception.message.match?(/connection is closed/i)
|
||||
ConnectionNotEstablished.new(exception)
|
||||
else
|
||||
super
|
||||
end
|
||||
when UNIQUE_VIOLATION
|
||||
RecordNotUnique.new(message, sql: sql, binds: binds)
|
||||
when FOREIGN_KEY_VIOLATION
|
||||
|
|
|
@ -475,18 +475,17 @@ module ActiveRecord
|
|||
end
|
||||
|
||||
def translate_exception(exception, message:, sql:, binds:)
|
||||
case exception.message
|
||||
# SQLite 3.8.2 returns a newly formatted error message:
|
||||
# UNIQUE constraint failed: *table_name*.*column_name*
|
||||
# Older versions of SQLite return:
|
||||
# column *column_name* is not unique
|
||||
if exception.message.match?(/(column(s)? .* (is|are) not unique|UNIQUE constraint failed: .*)/i)
|
||||
when /column(s)? .* (is|are) not unique/, /UNIQUE constraint failed: .*/
|
||||
RecordNotUnique.new(message, sql: sql, binds: binds)
|
||||
elsif exception.message.match?(/(.* may not be NULL|NOT NULL constraint failed: .*)/i)
|
||||
when /.* may not be NULL/, /NOT NULL constraint failed: .*/
|
||||
NotNullViolation.new(message, sql: sql, binds: binds)
|
||||
elsif exception.message.match?(/FOREIGN KEY constraint failed/i)
|
||||
when /FOREIGN KEY constraint failed/i
|
||||
InvalidForeignKey.new(message, sql: sql, binds: binds)
|
||||
elsif exception.message.match?(/called on a closed database/i)
|
||||
ConnectionNotEstablished.new(exception)
|
||||
else
|
||||
super
|
||||
end
|
||||
|
|
|
@ -58,7 +58,7 @@ class Mysql2ConnectionTest < ActiveRecord::Mysql2TestCase
|
|||
def test_execute_after_disconnect
|
||||
@connection.disconnect!
|
||||
|
||||
error = assert_raise(ActiveRecord::ConnectionNotEstablished) do
|
||||
error = assert_raise(ActiveRecord::StatementInvalid) do
|
||||
@connection.execute("SELECT 1")
|
||||
end
|
||||
assert_kind_of Mysql2::Error, error.cause
|
||||
|
@ -67,7 +67,7 @@ class Mysql2ConnectionTest < ActiveRecord::Mysql2TestCase
|
|||
def test_quote_after_disconnect
|
||||
@connection.disconnect!
|
||||
|
||||
assert_raise(ActiveRecord::ConnectionNotEstablished) do
|
||||
assert_raise(ActiveRecord::StatementInvalid) do
|
||||
@connection.quote("string")
|
||||
end
|
||||
end
|
||||
|
|
|
@ -22,7 +22,7 @@ class TestDisconnectedAdapter < ActiveRecord::TestCase
|
|||
test "can't execute statements while disconnected" do
|
||||
@connection.execute "SELECT count(*) from products"
|
||||
@connection.disconnect!
|
||||
assert_raises(ActiveRecord::ConnectionNotEstablished) do
|
||||
assert_raises(ActiveRecord::StatementInvalid) do
|
||||
silence_warnings do
|
||||
@connection.execute "SELECT count(*) from products"
|
||||
end
|
||||
|
|
Loading…
Reference in a new issue