Class: ActiveRecord::ConnectionAdapters::Mysql2Adapter
| Relationships & Source Files | |
| Super Chains via Extension / Inclusion / Inheritance | |
|
Class Chain:
|
|
|
Instance Chain:
self,
Mysql2::DatabaseStatements,
AbstractMysqlAdapter,
MySQL::SchemaStatements,
MySQL::Quoting,
MySQL::DatabaseStatements,
AbstractAdapter,
Savepoints,
::ActiveRecord::QueryCache,
DatabaseLimits,
Quoting,
DatabaseStatements,
SchemaStatements,
::ActiveRecord::Migration::JoinTable,
::ActiveSupport::Callbacks
|
|
| Inherits: |
ActiveRecord::ConnectionAdapters::AbstractMysqlAdapter
|
| Defined in: | activerecord/lib/active_record/connection_adapters/mysql2_adapter.rb |
Overview
Active Record MySQL2 Adapter
Constant Summary
-
ADAPTER_NAME =
# File 'activerecord/lib/active_record/connection_adapters/mysql2_adapter.rb', line 19"Mysql2" -
ER_ACCESS_DENIED_ERROR =
# File 'activerecord/lib/active_record/connection_adapters/mysql2_adapter.rb', line 151045 -
ER_BAD_DB_ERROR =
# File 'activerecord/lib/active_record/connection_adapters/mysql2_adapter.rb', line 131049 -
ER_CONN_HOST_ERROR =
# File 'activerecord/lib/active_record/connection_adapters/mysql2_adapter.rb', line 162003 -
ER_DBACCESS_DENIED_ERROR =
# File 'activerecord/lib/active_record/connection_adapters/mysql2_adapter.rb', line 141044 -
ER_UNKNOWN_HOST_ERROR =
# File 'activerecord/lib/active_record/connection_adapters/mysql2_adapter.rb', line 172005 -
TYPE_MAP =
# File 'activerecord/lib/active_record/connection_adapters/mysql2_adapter.rb', line 53Type::TypeMap.new.tap { |m| initialize_type_map(m) }
::ActiveSupport::Callbacks - Included
DatabaseStatements - Included
DEFAULT_INSERT_VALUE, HIGH_PRECISION_CURRENT_TIMESTAMP
AbstractAdapter - Inherited
ADAPTER_NAME, COMMENT_REGEX, DEFAULT_READ_QUERY, EXTENDED_TYPE_MAPS, SIMPLE_INT, TYPE_MAP
MySQL::DatabaseStatements - Included
HIGH_PRECISION_CURRENT_TIMESTAMP, READ_QUERY
MySQL::Quoting - Included
QUOTED_COLUMN_NAMES, QUOTED_TABLE_NAMES
MySQL::SchemaStatements - Included
AbstractMysqlAdapter - Inherited
CR_SERVER_GONE_ERROR, CR_SERVER_LOST, EMULATE_BOOLEANS_TRUE, ER_CANNOT_ADD_FOREIGN, ER_CANNOT_CREATE_TABLE, ER_CLIENT_INTERACTION_TIMEOUT, ER_CONNECTION_KILLED, ER_DATA_TOO_LONG, ER_DB_CREATE_EXISTS, ER_DO_NOT_HAVE_DEFAULT, ER_DUP_ENTRY, ER_FILSORT_ABORT, ER_FK_INCOMPATIBLE_COLUMNS, ER_LOCK_DEADLOCK, ER_LOCK_WAIT_TIMEOUT, ER_NOT_NULL_VIOLATION, ER_NO_REFERENCED_ROW, ER_NO_REFERENCED_ROW_2, ER_OUT_OF_RANGE, ER_QUERY_INTERRUPTED, ER_QUERY_TIMEOUT, ER_ROW_IS_REFERENCED, ER_ROW_IS_REFERENCED_2, ER_SERVER_SHUTDOWN, EXTENDED_TYPE_MAPS, NATIVE_DATABASE_TYPES
Class Attribute Summary
AbstractMysqlAdapter - Inherited
AbstractAdapter - Inherited
Class Method Summary
- .new ⇒ Mysql2Adapter constructor
- .new_client(config)
- .initialize_type_map(m) private
AbstractMysqlAdapter - Inherited
AbstractAdapter - Inherited
| .database_exists? | Does the database for this adapter exist? |
| .dbconsole | Opens a database console session. |
| .find_cmd_and_exec, .type_cast_config_to_boolean, .type_cast_config_to_integer, .validate_default_timezone, .extract_limit, .extract_precision, .extract_scale, .initialize_type_map, .register_class_with_limit, .build_read_query_regexp, .extended_type_map, .new, .register_class_with_precision | |
::ActiveSupport::DescendantsTracker - Inherited
Instance Attribute Summary
- #active? ⇒ Boolean readonly
- #connected? ⇒ Boolean readonly
- #savepoint_errors_invalidate_transactions? ⇒ Boolean readonly
- #supports_comments? ⇒ Boolean readonly
- #supports_comments_in_create? ⇒ Boolean readonly
- #supports_json? ⇒ Boolean readonly
- #supports_lazy_transactions? ⇒ Boolean readonly
- #supports_savepoints? ⇒ Boolean readonly
Mysql2::DatabaseStatements - Included
AbstractMysqlAdapter - Inherited
MySQL::SchemaStatements - Included
MySQL::DatabaseStatements - Included
AbstractAdapter - Inherited
| #__callbacks, | |
| #active? | Checks whether the connection to the database is still active. |
| #connected? | Checks whether the connection to the database was established. |
| #database_exists?, | |
| #in_use? | Alias for AbstractAdapter#owner. |
| #lock, #logger, #owner, #pool, #pool=, | |
| #prepared_statements | Alias for AbstractAdapter#prepared_statements?. |
| #preventing_writes? | Determines whether writes are currently being prevented. |
| #replica?, | |
| #requires_reloading? | Returns true if its required to reload the connection between requests for development mode. |
| #savepoint_errors_invalidate_transactions? | Do TransactionRollbackErrors on savepoints affect the parent transaction? |
| #supports_advisory_locks? | Does this adapter support application-enforced advisory locking? |
| #supports_bulk_alter?, | |
| #supports_check_constraints? | Does this adapter support creating check constraints? |
| #supports_comments? | Does this adapter support metadata comments on database objects (tables, columns, indexes)? |
| #supports_comments_in_create? | Can comments for tables, columns, and indexes be specified in create/alter table statements? |
| #supports_common_table_expressions?, #supports_concurrent_connections?, | |
| #supports_datetime_with_precision? | Does this adapter support datetime with precision? |
| #supports_ddl_transactions? | Does this adapter support DDL rollbacks in transactions? That is, would CREATE TABLE or ALTER TABLE get rolled back by a transaction? |
| #supports_deferrable_constraints? | Does this adapter support creating deferrable constraints? |
| #supports_exclusion_constraints? | Does this adapter support creating exclusion constraints? |
| #supports_explain? | Does this adapter support explain? |
| #supports_expression_index? | Does this adapter support expression indices? |
| #supports_extensions? | Does this adapter support database extensions? |
| #supports_foreign_keys? | Does this adapter support creating foreign key constraints? |
| #supports_foreign_tables? | Does this adapter support foreign/external tables? |
| #supports_index_include? | Does this adapter support including non-key columns? |
| #supports_index_sort_order? | Does this adapter support index sort order? |
| #supports_indexes_in_create? | Does this adapter support creating indexes in the same statement as creating the table? |
| #supports_insert_conflict_target?, #supports_insert_on_duplicate_skip?, #supports_insert_on_duplicate_update?, #supports_insert_returning?, | |
| #supports_json? | Does this adapter support JSON data type? |
| #supports_lazy_transactions?, | |
| #supports_materialized_views? | Does this adapter support materialized views? |
| #supports_nulls_not_distinct?, | |
| #supports_optimizer_hints? | Does this adapter support optimizer hints? |
| #supports_partial_index? | Does this adapter support partial indices? |
| #supports_partitioned_indexes?, #supports_restart_db_transaction?, | |
| #supports_savepoints? | Does this adapter support savepoints? |
| #supports_transaction_isolation? | Does this adapter support setting the isolation level for a transaction? |
| #supports_unique_constraints? | Does this adapter support creating unique constraints? |
| #supports_validate_constraints? | Does this adapter support creating invalid constraints? |
| #supports_views? | Does this adapter support views? |
| #supports_virtual_columns? | Does this adapter support virtual columns? |
| #visitor, #reconnect_can_restore_state?, #advisory_locks_enabled?, #async_enabled?, #lock_thread=, #pinned | |
DatabaseStatements - Included
SchemaStatements - Included
Instance Method Summary
-
#disconnect!
Disconnects from the database if already connected.
-
#error_number(exception)
HELPER METHODS ===========================================.
- #reset!
- #configure_connection private
- #connect private
- #default_prepared_statements private
- #full_version private
- #get_full_version private
- #reconnect private
- #text_type?(type) ⇒ Boolean private
- #translate_exception(exception, message:, sql:, binds:) private
- #discard! Internal use only
Mysql2::DatabaseStatements - Included
| #affected_rows, #cast_result, #execute_batch, #free_raw_result, #last_inserted_id, #perform_query, | |
| #select_all | Returns an |
AbstractMysqlAdapter - Inherited
MySQL::SchemaStatements - Included
| #create_schema_dumper, #create_table, | |
| #indexes | Returns an array of indexes for the given table. |
| #internal_string_options_for_primary_key, #remove_column, #remove_foreign_key, #schema_creation, #table_alias_length, | |
| #type_to_sql | Maps logical |
| #update_table_definition, #add_index_length, #add_options_for_index_columns, #create_table_definition, #data_source_sql, #default_row_format, #default_type, #extract_foreign_key_action, #extract_schema_qualified_name, #fetch_type_metadata, #integer_to_sql, #limit_to_size, #new_column_from_field, #quoted_scope, #type_with_size_to_sql, #valid_primary_key_options | |
MySQL::Quoting - Included
MySQL::DatabaseStatements - Included
AbstractAdapter - Inherited
| #adapter_name | Returns the human-readable name of the adapter. |
| #check_all_foreign_keys_valid! | Override to check all foreign key constraints in a database. |
| #clear_cache! | Clear any caching the database adapter may be doing. |
| #close | Check the connection back in to the connection pool. |
| #connect!, #connection_retries, #default_timezone, | |
| #disable_extension | This is meant to be implemented by the adapters that support extensions. |
| #disable_referential_integrity | Override to turn off referential integrity while executing |
| #discard! | Immediately forget this connection ever existed. |
| #disconnect! | Disconnects from the database if already connected. |
| #enable_extension | This is meant to be implemented by the adapters that support extensions. |
| #expire | this method must only be called while holding connection pool’s mutex. |
| #extensions | A list of extensions, to be filled in by adapters that support them. |
| #index_algorithms | A list of index algorithms, to be filled by adapters that support them. |
| #lease | this method must only be called while holding connection pool’s mutex. |
| #prefetch_primary_key? | Should primary key values be selected from their corresponding sequence before the insert statement? If true, next_sequence_value is called before each insert to set the record’s primary key. |
| #prepared_statements?, | |
| #raw_connection | Provides access to the underlying database driver for this adapter. |
| #reconnect! | Disconnects from the database if already connected, and establishes a new connection with the database. |
| #reset! | Reset the state of this connection, directing the DBMS to clear transactions and other connection-related server-side state. |
| #retry_deadline, | |
| #role | The role (e.g. |
| #schema_cache, | |
| #schema_version | Returns the version identifier of the schema currently available in the database. |
| #shard | The shard (e.g. |
| #throw_away! | Removes the connection from the pool and disconnect it. |
| #unprepared_statement, | |
| #verify! | Checks whether the connection to the database is still active (i.e. not stale). |
| #verify_timeout, | |
| #any_raw_connection | Returns a raw connection for internal use with methods that are known to both be thread-safe and not rely upon actual server communication. |
| #arel_visitor, #attempt_configure_connection, #backoff, | |
| #build_result | Builds the result object. |
| #build_statement_pool, #can_perform_case_insensitive_comparison_for?, #collector, #column_for, #column_for_attribute, | |
| #configure_connection | Perform any necessary initialization upon the newly-established connection settings, run queries to configure any application-global “session” variables, etc. |
| #default_prepared_statements, #extended_type_map_key, #invalidate_transaction, #log, #reconnect, #retryable_connection_error?, #retryable_query_error?, #translate_exception, #translate_exception_class, #type_map, | |
| #valid_raw_connection | Similar to any_raw_connection, but ensures it is validated and connected. |
| #verified! | Mark the connection as verified. |
| #warning_ignored?, | |
| #with_raw_connection | Lock the monitor, ensure we’re properly connected and transactions are materialized, and then yield the underlying raw connection object. |
| #add_enum_value | This is meant to be implemented by the adapters that support custom enum types. |
| #build_insert_sql | Called by |
| #case_insensitive_comparison, #case_sensitive_comparison, #check_if_write_query, #check_version, #clean!, #connection_descriptor, | |
| #create_enum | This is meant to be implemented by the adapters that support custom enum types. |
| #create_virtual_table | This is meant to be implemented by the adapters that support virtual tables. |
| #database_version, #default_index_type?, #default_uniqueness_comparison, | |
| #drop_enum | This is meant to be implemented by the adapters that support custom enum types. |
| #drop_virtual_table | This is meant to be implemented by the adapters that support virtual tables. |
| #get_advisory_lock | This is meant to be implemented by the adapters that support advisory locks. |
| #get_database_version, #inspect, #prepared_statements_disabled_cache, | |
| #release_advisory_lock | This is meant to be implemented by the adapters that support advisory locks. |
| #rename_enum | This is meant to be implemented by the adapters that support custom enum types. |
| #rename_enum_value | This is meant to be implemented by the adapters that support custom enum types. |
| #return_value_after_insert?, | |
| #seconds_idle | Seconds since this connection was returned to the pool. |
| #seconds_since_last_activity | Seconds since this connection last communicated with the server. |
| #steal! | this method must only be called while holding connection pool’s mutex (and a desire for segfaults). |
| #valid_type?, #instrumenter | |
Savepoints - Included
DatabaseLimits - Included
| #index_name_length | Returns the maximum length of an index name. |
| #table_alias_length | Returns the maximum length of a table alias. |
| #table_name_length | Returns the maximum length of a table name. |
| #bind_params_length, #max_identifier_length | |
Quoting - Included
| #quote | Quotes the column value to help prevent SQL injection attacks. |
| #quote_column_name | Quotes the column name. |
| #quote_string | Quotes a string, escaping any ‘ (single quote) and \ (backslash) characters. |
| #quote_table_name | Quotes the table name. |
| #quote_table_name_for_assignment | Override to return the quoted table name for assignment. |
| #quoted_date | Quote date/time values for use in SQL input. |
| #quoted_false, #quoted_true, | |
| #type_cast | Cast a |
| #unquoted_false, #unquoted_true, #lookup_cast_type, #type_casted_binds, | |
| #cast_bound_value | Cast a value to be used as a bound parameter of unknown type. |
| #lookup_cast_type_from_column | If you are having to call this function, you are likely doing something wrong. |
| #quote_default_expression, #quoted_binary, #quoted_time, #sanitize_as_sql_comment | |
DatabaseStatements - Included
| #add_transaction_record | Register a record with the current transaction so that its after_commit and after_rollback callbacks can be called. |
| #begin_db_transaction | Begins the transaction (and turns off auto-committing). |
| #begin_isolated_db_transaction | Begins the transaction with the isolation level set. |
| #commit_db_transaction | Commits the transaction (and turns on auto-committing). |
| #create | Alias for DatabaseStatements#insert. |
| #default_sequence_name, | |
| #delete | Executes the delete statement and returns the number of rows affected. |
| #disable_lazy_transactions!, #empty_insert_statement_value, #enable_lazy_transactions!, | |
| #exec_delete | Executes delete |
| #exec_insert | Executes insert |
| #exec_query | Executes |
| #exec_update | Executes update |
| #execute | Executes the SQL statement in the context of this connection and returns the raw result from the connection adapter. |
| #high_precision_current_timestamp | Returns an |
| #initialize, | |
| #insert | Executes an INSERT query and returns the new record’s ID. |
| #insert_fixture | Inserts the given fixture into the table. |
| #insert_fixtures_set, | |
| #reset_isolation_level | Hook point called after an isolated DB transaction is committed or rolled back. |
| #reset_sequence! | Set the sequence to the max value of the table’s column. |
| #restart_db_transaction, | |
| #rollback_db_transaction | Rolls back the transaction (and turns on auto-committing). |
| #rollback_to_savepoint, | |
| #sanitize_limit | Sanitizes the given LIMIT parameter in order to prevent SQL injection. |
| #select_all | Returns an |
| #select_one | Returns a record hash with the column names as keys and column values as values. |
| #select_rows | Returns an array of arrays containing the field values. |
| #select_value | Returns a single value from a record. |
| #select_values | Returns an array of the values of the first column in a select: |
| #to_sql | Converts an arel AST to SQL. |
| #transaction | Runs the given block in a database transaction, and returns the result of the block. |
| #transaction_isolation_levels, | |
| #truncate | Executes the truncate statement. |
| #update | Executes the update statement and returns the number of rows affected. |
| #write_query? | Determines whether the SQL statement is a write query. |
| #affected_rows, #arel_from_relation, #build_fixture_sql, #build_fixture_statements, #build_truncate_statement, #build_truncate_statements, | |
| #cast_result | Receive a native adapter result object and returns an |
| #combine_multi_statements, #default_insert_value, #execute_batch, #extract_table_ref_from_insert_sql, | |
| #internal_execute | Same as |
| #last_inserted_id, #perform_query, #preprocess_query, | |
| #raw_execute | Lowest level way to execute a query. |
| #returning_column_values, | |
| #select | Returns an |
| #single_value_from_rows, #begin_deferred_transaction, | |
| #cacheable_query | This is used in the |
| #exec_insert_all, #exec_restart_db_transaction, #exec_rollback_db_transaction, #explain, | |
| #internal_exec_query | Execute a query and returns an |
| #mark_transaction_written_if_write, #query, #query_value, #query_values, | |
| #raw_exec_query | Same as raw_execute but returns an |
| #reset_transaction, #truncate_tables, | |
| #with_yaml_fallback |
|
| #sql_for_insert, #to_sql_and_binds | |
SchemaStatements - Included
| #add_belongs_to | Alias for SchemaStatements#add_reference. |
| #add_check_constraint | Adds a new check constraint to the table. |
| #add_column | Add a new |
| #add_foreign_key | Adds a new foreign key. |
| #add_index | Adds a new index to the table. |
| #add_reference | Adds a reference. |
| #add_timestamps | Adds timestamps ( |
| #assume_migrated_upto_version, | |
| #build_create_table_definition | Returns a |
| #change_column | Changes the column’s definition according to the new options. |
| #change_column_comment | Changes the comment for a column or removes it if |
| #change_column_default | Sets a new default value for a column: |
| #change_column_null | Sets or removes a |
| #change_table | A block for changing columns in |
| #change_table_comment | Changes the comment for a table or removes it if |
| #check_constraint_exists? | Checks to see if a check constraint exists on a table for a given check constraint definition. |
| #check_constraints | Returns an array of check constraints for the given table. |
| #column_exists? | Checks to see if a column exists in a given table. |
| #columns | Returns an array of |
| #create_join_table | Creates a new join table with the name created using the lexical order of the first two arguments. |
| #create_table | Creates a new table with the name |
| #data_source_exists? | Checks to see if the data source |
| #data_sources | Returns the relation names usable to back Active Record models. |
| #drop_join_table | Drops the join table specified by the given arguments. |
| #drop_table | Drops a table or tables from the database. |
| #foreign_key_exists? | Checks to see if a foreign key exists on a table for a given foreign key definition. |
| #foreign_keys | Returns an array of foreign keys for the given table. |
| #index_exists? | Checks to see if an index exists on a table for a given index definition. |
| #index_name_exists? | Verifies the existence of an index with a given name. |
| #indexes | Returns an array of indexes for the given table. |
| #max_index_name_size | Returns the maximum length of an index name in bytes. |
| #native_database_types | Returns a hash of mappings from the abstract data types to the native database types. |
| #options_include_default?, | |
| #primary_key | Returns just a table’s primary key. |
| #remove_belongs_to | Alias for SchemaStatements#remove_reference. |
| #remove_check_constraint | Removes the given check constraint from the table. |
| #remove_column | Removes the column from the table definition. |
| #remove_columns | Removes the given columns from the table definition. |
| #remove_foreign_key | Removes the given foreign key from the table. |
| #remove_index | Removes the given index from the table. |
| #remove_reference | Removes the reference(s). |
| #remove_timestamps | Removes the timestamp columns ( |
| #rename_column | Renames a column. |
| #rename_index | Renames an index. |
| #rename_table | Renames a table. |
| #table_alias_for | Truncates a table alias according to the limits of the current adapter. |
| #table_comment | Returns the table comment that’s stored in database metadata. |
| #table_exists? | Checks to see if the table |
| #table_options, | |
| #tables | Returns an array of table names defined in the database. |
| #view_exists? | Checks to see if the view |
| #views | Returns an array of view names defined in the database. |
| #add_column_for_alter, #add_index_sort_order, | |
| #add_options_for_index_columns | Overridden by the |
| #add_timestamps_for_alter, #can_remove_index_by_name?, #change_column_default_for_alter, #check_constraint_for, #check_constraint_for!, #check_constraint_name, #column_options_keys, #create_alter_table, #create_table_definition, #data_source_sql, | |
| #expression_column_name? | Try to identify whether the given column name is an expression. |
| #extract_foreign_key_action, | |
| #extract_new_comment_value | Alias for SchemaStatements#extract_new_default_value. |
| #extract_new_default_value, #fetch_type_metadata, #foreign_key_for, #foreign_key_for!, #foreign_key_name, #generate_index_name, #index_column_names, #index_name_for_remove, #index_name_options, #insert_versions_sql, #options_for_index_columns, #quoted_scope, #reference_name_for_table, #remove_column_for_alter, #remove_columns_for_alter, #remove_timestamps_for_alter, #rename_column_indexes, #rename_column_sql, #rename_table_indexes, #strip_table_name_prefix_and_suffix, #validate_change_column_null_argument!, #validate_create_table_options!, #validate_index_length!, #validate_table_length!, #add_columns, #add_index_options, | |
| #build_add_column_definition | Builds an |
| #build_change_column_default_definition | Builds a |
| #build_create_index_definition | Builds a |
| #build_create_join_table_definition | Builds a |
| #bulk_change_table, #check_constraint_options, | |
| #columns_for_distinct | Given a set of columns and an ORDER BY clause, returns the columns for a SELECT DISTINCT. |
| #create_schema_dumper, #distinct_relation_for_primary_key, #dump_schema_information, #foreign_key_column_for, #foreign_key_options, #index_algorithm, #index_name, #internal_string_options_for_primary_key, #quoted_columns_for_index, #remove_constraint, | |
| #schema_creation | Returns an instance of |
| #type_to_sql, #update_table_definition, #valid_column_definition_options, #valid_primary_key_options, #valid_table_definition_options | |
::ActiveRecord::Migration::JoinTable - Included
::ActiveSupport::Callbacks - Included
| #run_callbacks | Runs the callbacks for the given event. |
| #halted_callback_hook | A hook invoked every time a before callback is halted. |
Constructor Details
.new ⇒ Mysql2Adapter
# File 'activerecord/lib/active_record/connection_adapters/mysql2_adapter.rb', line 55
def initialize(...) super @affected_rows_before_warnings = nil @config[:flags] ||= 0 if @config[:flags].kind_of? Array @config[:flags].push "FOUND_ROWS" else @config[:flags] |= ::Mysql2::Client::FOUND_ROWS end @connection_parameters ||= @config end
Class Method Details
.initialize_type_map(m) (private)
[ GitHub ]# File 'activerecord/lib/active_record/connection_adapters/mysql2_adapter.rb', line 40
def initialize_type_map(m) super m.register_type(%r(char)i) do |sql_type| limit = extract_limit(sql_type) Type.lookup(:string, adapter: :mysql2, limit: limit) end m.register_type %r(^enum)i, Type.lookup(:string, adapter: :mysql2) m.register_type %r(^set)i, Type.lookup(:string, adapter: :mysql2) end
.new_client(config)
[ GitHub ]# File 'activerecord/lib/active_record/connection_adapters/mysql2_adapter.rb', line 24
def new_client(config) ::Mysql2::Client.new(config) rescue ::Mysql2::Error => error case error.error_number when ER_BAD_DB_ERROR raise ActiveRecord::NoDatabaseError.db_error(config[:database]) when ER_DBACCESS_DENIED_ERROR, ER_ACCESS_DENIED_ERROR raise ActiveRecord::DatabaseConnectionError.username_error(config[:username]) when ER_CONN_HOST_ERROR, ER_UNKNOWN_HOST_ERROR raise ActiveRecord::DatabaseConnectionError.hostname_error(config[:host]) else raise ActiveRecord::ConnectionNotEstablished, error. end end
Instance Attribute Details
#active? ⇒ Boolean (readonly)
[ GitHub ]
# File 'activerecord/lib/active_record/connection_adapters/mysql2_adapter.rb', line 108
def active? if connected? @lock.synchronize do if @raw_connection&.ping verified! true end end end || false end
#connected? ⇒ Boolean (readonly)
[ GitHub ]
# File 'activerecord/lib/active_record/connection_adapters/mysql2_adapter.rb', line 104
def connected? !(@raw_connection.nil? || @raw_connection.closed?) end
#savepoint_errors_invalidate_transactions? ⇒ Boolean (readonly)
[ GitHub ]
# File 'activerecord/lib/active_record/connection_adapters/mysql2_adapter.rb', line 86
def savepoint_errors_invalidate_transactions? true end
#supports_comments? ⇒ Boolean (readonly)
[ GitHub ]
# File 'activerecord/lib/active_record/connection_adapters/mysql2_adapter.rb', line 74
def supports_comments? true end
#supports_comments_in_create? ⇒ Boolean (readonly)
[ GitHub ]
# File 'activerecord/lib/active_record/connection_adapters/mysql2_adapter.rb', line 78
def supports_comments_in_create? true end
#supports_json? ⇒ Boolean (readonly)
[ GitHub ]
# File 'activerecord/lib/active_record/connection_adapters/mysql2_adapter.rb', line 70
def supports_json? !mariadb? && database_version >= "5.7.8" end
#supports_lazy_transactions? ⇒ Boolean (readonly)
[ GitHub ]
# File 'activerecord/lib/active_record/connection_adapters/mysql2_adapter.rb', line 90
def supports_lazy_transactions? true end
#supports_savepoints? ⇒ Boolean (readonly)
[ GitHub ]
# File 'activerecord/lib/active_record/connection_adapters/mysql2_adapter.rb', line 82
def supports_savepoints? true end
Instance Method Details
#configure_connection (private)
[ GitHub ]# File 'activerecord/lib/active_record/connection_adapters/mysql2_adapter.rb', line 158
def configure_connection @raw_connection.[:as] = :array @raw_connection.[:database_timezone] = default_timezone super end
#connect (private)
[ GitHub ]# File 'activerecord/lib/active_record/connection_adapters/mysql2_adapter.rb', line 144
def connect @raw_connection = self.class.new_client(@connection_parameters) rescue ConnectionNotEstablished => ex raise ex.set_pool(@pool) end
#default_prepared_statements (private)
[ GitHub ]# File 'activerecord/lib/active_record/connection_adapters/mysql2_adapter.rb', line 186
def default_prepared_statements false end
#discard!
# File 'activerecord/lib/active_record/connection_adapters/mysql2_adapter.rb', line 131
def discard! # :nodoc: @lock.synchronize do super @raw_connection&.automatic_close = false @raw_connection = nil end end
#disconnect!
Disconnects from the database if already connected. Otherwise, this method does nothing.
# File 'activerecord/lib/active_record/connection_adapters/mysql2_adapter.rb', line 123
def disconnect! @lock.synchronize do super @raw_connection&.close @raw_connection = nil end end
#error_number(exception)
HELPER METHODS ===========================================
# File 'activerecord/lib/active_record/connection_adapters/mysql2_adapter.rb', line 96
def error_number(exception) exception.error_number if exception.respond_to?(:error_number) end
#full_version (private)
[ GitHub ]# File 'activerecord/lib/active_record/connection_adapters/mysql2_adapter.rb', line 164
def full_version database_version.full_version_string end
#get_full_version (private)
[ GitHub ]# File 'activerecord/lib/active_record/connection_adapters/mysql2_adapter.rb', line 168
def get_full_version any_raw_connection.server_info[:version] end
#reconnect (private)
[ GitHub ]# File 'activerecord/lib/active_record/connection_adapters/mysql2_adapter.rb', line 150
def reconnect @lock.synchronize do @raw_connection&.close @raw_connection = nil connect end end
#reset!
[ GitHub ]# File 'activerecord/lib/active_record/connection_adapters/mysql2_adapter.rb', line 119
alias :reset! :reconnect!
#text_type?(type) ⇒ Boolean (private)
#translate_exception(exception, message:, sql:, binds:) (private)
[ GitHub ]# File 'activerecord/lib/active_record/connection_adapters/mysql2_adapter.rb', line 172
def translate_exception(exception, message:, sql:, binds:) if exception.is_a?(::Mysql2::Error::TimeoutError) && !exception.error_number ActiveRecord::AdapterTimeout.new(, sql: sql, binds: binds, connection_pool: @pool) elsif exception.is_a?(::Mysql2::Error::ConnectionError) if exception..match?(/MySQL client is not connected/i) ActiveRecord::ConnectionNotEstablished.new(exception, connection_pool: @pool) else ActiveRecord::ConnectionFailed.new(, sql: sql, binds: binds, connection_pool: @pool) end else super end end