method
translate_exception
rails latest stable - Class:
ActiveRecord::ConnectionAdapters::AbstractMysqlAdapter
translate_exception(exception, message:, sql:, binds:)private
No documentation available.
# File activerecord/lib/active_record/connection_adapters/abstract_mysql_adapter.rb, line 779
def translate_exception(exception, message,, sql,, binds))
case error_number(exception)
when nil
if exception.message.match?(/MySQL client is not connected/)
ConnectionNotEstablished.new(exception, connection_pool: @pool)
else
super
end
when ER_CONNECTION_KILLED, CR_SERVER_GONE_ERROR, CR_SERVER_LOST, ER_CLIENT_INTERACTION_TIMEOUT
ConnectionFailed.new(message, sql: sql, binds: binds, connection_pool: @pool)
when ER_DB_CREATE_EXISTS
DatabaseAlreadyExists.new(message, sql: sql, binds: binds, connection_pool: @pool)
when ER_DUP_ENTRY
RecordNotUnique.new(message, sql: sql, binds: binds, connection_pool: @pool)
when ER_NO_REFERENCED_ROW, ER_ROW_IS_REFERENCED, ER_ROW_IS_REFERENCED_2, ER_NO_REFERENCED_ROW_2
InvalidForeignKey.new(message, sql: sql, binds: binds, connection_pool: @pool)
when ER_CANNOT_ADD_FOREIGN, ER_FK_INCOMPATIBLE_COLUMNS
mismatched_foreign_key(message, sql: sql, binds: binds, connection_pool: @pool)
when ER_CANNOT_CREATE_TABLE
if message.include?("errno: 150")
mismatched_foreign_key(message, sql: sql, binds: binds, connection_pool: @pool)
else
super
end
when ER_DATA_TOO_LONG
ValueTooLong.new(message, sql: sql, binds: binds, connection_pool: @pool)
when ER_OUT_OF_RANGE
RangeError.new(message, sql: sql, binds: binds, connection_pool: @pool)
when ER_NOT_NULL_VIOLATION, ER_DO_NOT_HAVE_DEFAULT
NotNullViolation.new(message, sql: sql, binds: binds, connection_pool: @pool)
when ER_LOCK_DEADLOCK
Deadlocked.new(message, sql: sql, binds: binds, connection_pool: @pool)
when ER_LOCK_WAIT_TIMEOUT
LockWaitTimeout.new(message, sql: sql, binds: binds, connection_pool: @pool)
when ER_QUERY_TIMEOUT, ER_FILSORT_ABORT
StatementTimeout.new(message, sql: sql, binds: binds, connection_pool: @pool)
when ER_QUERY_INTERRUPTED
QueryCanceled.new(message, sql: sql, binds: binds, connection_pool: @pool)
else
super
end
end