Class: ActiveRecord::ConnectionAdapters::AbstractMysqlAdapter
| Relationships & Source Files | |
| Extension / Inclusion / Inheritance Descendants | |
|
Subclasses:
|
|
| Super Chains via Extension / Inclusion / Inheritance | |
|
Class Chain:
|
|
|
Instance Chain:
|
|
| Inherits: |
ActiveRecord::ConnectionAdapters::AbstractAdapter
|
| Defined in: | activerecord/lib/active_record/connection_adapters/abstract_mysql_adapter.rb |
Constant Summary
-
ER_CANNOT_ADD_FOREIGN =
# File 'activerecord/lib/active_record/connection_adapters/abstract_mysql_adapter.rb', line 6281215 -
ER_CANNOT_CREATE_TABLE =
# File 'activerecord/lib/active_record/connection_adapters/abstract_mysql_adapter.rb', line 6291005 -
ER_DATA_TOO_LONG =
# File 'activerecord/lib/active_record/connection_adapters/abstract_mysql_adapter.rb', line 6251406 -
ER_DO_NOT_HAVE_DEFAULT =
# File 'activerecord/lib/active_record/connection_adapters/abstract_mysql_adapter.rb', line 6231364 -
ER_DUP_ENTRY =
# File 'activerecord/lib/active_record/connection_adapters/abstract_mysql_adapter.rb', line 621
1062 -
ER_LOCK_DEADLOCK =
# File 'activerecord/lib/active_record/connection_adapters/abstract_mysql_adapter.rb', line 6271213 -
ER_LOCK_WAIT_TIMEOUT =
# File 'activerecord/lib/active_record/connection_adapters/abstract_mysql_adapter.rb', line 6301205 -
ER_NOT_NULL_VIOLATION =
# File 'activerecord/lib/active_record/connection_adapters/abstract_mysql_adapter.rb', line 6221048 -
ER_NO_REFERENCED_ROW_2 =
# File 'activerecord/lib/active_record/connection_adapters/abstract_mysql_adapter.rb', line 6241452 -
ER_OUT_OF_RANGE =
# File 'activerecord/lib/active_record/connection_adapters/abstract_mysql_adapter.rb', line 6261264 -
ER_QUERY_INTERRUPTED =
# File 'activerecord/lib/active_record/connection_adapters/abstract_mysql_adapter.rb', line 6311317 -
ER_QUERY_TIMEOUT =
# File 'activerecord/lib/active_record/connection_adapters/abstract_mysql_adapter.rb', line 6323024 -
NATIVE_DATABASE_TYPES =
# File 'activerecord/lib/active_record/connection_adapters/abstract_mysql_adapter.rb', line 31{ primary_key: "bigint auto_increment PRIMARY KEY", string: { name: "varchar", limit: 255 }, text: { name: "text", limit: 65535 }, integer: { name: "int", limit: 4 }, float: { name: "float", limit: 24 }, decimal: { name: "decimal" }, datetime: { name: "datetime" }, timestamp: { name: "timestamp" }, time: { name: "time" }, date: { name: "date" }, binary: { name: "blob", limit: 65535 }, boolean: { name: "tinyint", limit: 1 }, json: { name: "json" }, }
::ActiveSupport::Callbacks - Included
AbstractAdapter - Inherited
Class Attribute Summary
AbstractAdapter - Inherited
Class Method Summary
AbstractAdapter - Inherited
::ActiveSupport::DescendantsTracker - Inherited
| clear, descendants, direct_descendants, | |
| store_inherited | This is the only method that is not thread safe, but is only ever called during the eager loading phase. |
Instance Attribute Summary
- #emulate_booleans rw
- #emulate_booleans? ⇒ Boolean rw
- #strict_mode? ⇒ Boolean readonly
- #supports_advisory_locks? ⇒ Boolean readonly
- #supports_datetime_with_precision? ⇒ Boolean readonly
- #supports_explain? ⇒ Boolean readonly
- #supports_foreign_keys? ⇒ Boolean readonly
- #supports_index_sort_order? ⇒ Boolean readonly
- #supports_indexes_in_create? ⇒ Boolean readonly
- #supports_transaction_isolation? ⇒ Boolean readonly
- #supports_views? ⇒ Boolean readonly
- #supports_virtual_columns? ⇒ Boolean readonly
AbstractAdapter - Inherited
| #__callbacks, #__callbacks?, | |
| #active? | Checks whether the connection to the database is still active. |
| #in_use? | Alias for AbstractAdapter#owner. |
| #lock, #logger, #owner, #pool, #prepared_statements, | |
| #requires_reloading? | Returns true if its required to reload the connection between requests for development mode. |
| #schema_cache, #schema_cache=, | |
| #supports_advisory_locks? | Does this adapter support application-enforced advisory locking? |
| #supports_bulk_alter?, | |
| #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_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_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_keys_in_create? | Does this adapter support creating foreign key constraints in the same statement as creating the table? |
| #supports_foreign_tables? | Does this adapter support foreign/external tables? |
| #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_json? | Does this adapter support json data type? |
| #supports_multi_insert? | Does this adapter support multi-value insert? |
| #supports_partial_index? | Does this adapter support partial indices? |
| #supports_savepoints? | Does this adapter support savepoints? |
| #supports_transaction_isolation? | Does this adapter support setting the isolation level for a transaction? |
| #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 | |
DatabaseStatements - Included
Instance Method Summary
- #begin_db_transaction
- #begin_isolated_db_transaction(isolation)
-
#charset
Returns the database character set.
-
#clear_cache!
Clears the prepared statements cache.
-
#collation
Returns the database collation strategy.
-
#create_database(name, options = {})
Create a new
MySQLdatabase with optional:charsetand:collation. - #current_database
-
#drop_table(table_name, options = {})
Drops a table from the database.
- #empty_insert_statement_value
-
#execute(sql, name = nil)
Executes the SQL statement in the context of this connection.
- #explain(arel, binds = [])
- #foreign_keys(table_name)
- #index_algorithms
- #insert_fixtures_set(fixture_set, tables_to_delete = [])
- #native_database_types
-
#recreate_database(name, options = {})
Drops the database specified on the
nameattribute and creates it again using the providedoptions. - #rename_index(table_name, old_name, new_name)
-
#rename_table(table_name, new_name)
Renames a table.
-
#show_variable(name)
SHOW VARIABLES LIKE ‘name’.
- #truncate(table_name, name = nil)
AbstractAdapter - Inherited
| #adapter_name | Returns the human-readable name of the adapter. |
| #clear_cache! | Clear any caching the database adapter may be doing, for example clearing the prepared statement cache. |
| #close | Check the connection back in to the connection pool. |
| #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. |
| #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. |
| #unprepared_statement, | |
| #verify! | Checks whether the connection to the database is still active (i.e. not stale). |
| #log | |
Savepoints - Included
DatabaseLimits - Included
| #allowed_index_name_length | Returns the maximum allowed length for an index name. |
| #column_name_length | Returns the maximum length of a column name. |
| #columns_per_multicolumn_index | Returns the maximum number of columns in a multicolumn index. |
| #columns_per_table | Returns the maximum number of columns per table. |
| #in_clause_length | Returns the maximum number of elements in an IN (x,y,z) clause. |
| #index_name_length | Returns the maximum length of an index name. |
| #indexes_per_table | Returns the maximum number of indexes per table. |
| #joins_per_query | Returns maximum number of joins in a single query. |
| #sql_query_length | Returns the maximum length of an SQL query. |
| #table_alias_length | Returns the maximum length of a table alias. |
| #table_name_length | Returns the maximum length of a table name. |
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 | |
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. |
| #empty_insert_statement_value, | |
| #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. |
| #initialize, | |
| #insert | Executes an INSERT query and returns the new record’s ID. |
| #insert_fixture | Inserts the given fixture into the table. |
| #insert_fixtures | Inserts a set of fixtures into the table. |
| #insert_fixtures_set, | |
| #join_to_delete | Alias for DatabaseStatements#join_to_update. |
| #reset_sequence! | Set the sequence to the max value of the table’s column. |
| #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, #transaction_state, | |
| #truncate | Executes the truncate statement. |
| #update | Executes the update statement and returns the number of rows affected. |
SchemaStatements - Included
| #add_belongs_to | Alias for SchemaStatements#add_reference. |
| #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, | |
| #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 |
| #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 useable to back Active Record models. |
| #drop_join_table | Drops the join table specified by the given arguments. |
| #drop_table | Drops a table 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. |
| #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_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. |
::ActiveSupport::Callbacks - Included
| #run_callbacks | Runs the callbacks for the given event. |
Constructor Details
.new(connection, logger, connection_options, config) ⇒ AbstractMysqlAdapter
# File 'activerecord/lib/active_record/connection_adapters/abstract_mysql_adapter.rb', line 53
def initialize(connection, logger, , config) super(connection, logger, config) @statements = StatementPool.new(self.class.type_cast_config_to_integer(config[:statement_limit])) if version < "5.1.10" raise "Your version of MySQL (#{version_string}) is too old. Active Record supports MySQL >= 5.1.10." end end
Class Attribute Details
.emulate_booleans (rw)
[ GitHub ]# File 'activerecord/lib/active_record/connection_adapters/abstract_mysql_adapter.rb', line 29
class_attribute :emulate_booleans, default: true
.emulate_booleans? ⇒ Boolean (rw)
[ GitHub ]
# File 'activerecord/lib/active_record/connection_adapters/abstract_mysql_adapter.rb', line 29
class_attribute :emulate_booleans, default: true
Instance Attribute Details
#emulate_booleans (rw)
[ GitHub ]# File 'activerecord/lib/active_record/connection_adapters/abstract_mysql_adapter.rb', line 29
class_attribute :emulate_booleans, default: true
#emulate_booleans? ⇒ Boolean (rw)
[ GitHub ]
# File 'activerecord/lib/active_record/connection_adapters/abstract_mysql_adapter.rb', line 29
class_attribute :emulate_booleans, default: true
#strict_mode? ⇒ Boolean (readonly)
[ GitHub ]
# File 'activerecord/lib/active_record/connection_adapters/abstract_mysql_adapter.rb', line 521
def strict_mode? self.class.type_cast_config_to_boolean(@config.fetch(:strict, true)) end
#supports_advisory_locks? ⇒ Boolean (readonly)
[ GitHub ]
# File 'activerecord/lib/active_record/connection_adapters/abstract_mysql_adapter.rb', line 115
def supports_advisory_locks? true end
#supports_datetime_with_precision? ⇒ Boolean (readonly)
[ GitHub ]
#supports_explain? ⇒ Boolean (readonly)
[ GitHub ]
# File 'activerecord/lib/active_record/connection_adapters/abstract_mysql_adapter.rb', line 83
def supports_explain? true end
#supports_foreign_keys? ⇒ Boolean (readonly)
[ GitHub ]
# File 'activerecord/lib/active_record/connection_adapters/abstract_mysql_adapter.rb', line 91
def supports_foreign_keys? true end
#supports_index_sort_order? ⇒ Boolean (readonly)
[ GitHub ]
#supports_indexes_in_create? ⇒ Boolean (readonly)
[ GitHub ]
# File 'activerecord/lib/active_record/connection_adapters/abstract_mysql_adapter.rb', line 87
def supports_indexes_in_create? true end
#supports_transaction_isolation? ⇒ Boolean (readonly)
[ GitHub ]
# File 'activerecord/lib/active_record/connection_adapters/abstract_mysql_adapter.rb', line 79
def supports_transaction_isolation? true end
#supports_views? ⇒ Boolean (readonly)
[ GitHub ]
# File 'activerecord/lib/active_record/connection_adapters/abstract_mysql_adapter.rb', line 95
def supports_views? true end
#supports_virtual_columns? ⇒ Boolean (readonly)
[ GitHub ]
Instance Method Details
#begin_db_transaction
[ GitHub ]# File 'activerecord/lib/active_record/connection_adapters/abstract_mysql_adapter.rb', line 199
def begin_db_transaction execute "BEGIN" end
#begin_isolated_db_transaction(isolation)
[ GitHub ]# File 'activerecord/lib/active_record/connection_adapters/abstract_mysql_adapter.rb', line 203
def begin_isolated_db_transaction(isolation) execute "SET TRANSACTION ISOLATION LEVEL #{transaction_isolation_levels.fetch(isolation)}" begin_db_transaction end
#charset
Returns the database character set.
# File 'activerecord/lib/active_record/connection_adapters/abstract_mysql_adapter.rb', line 271
def charset show_variable "character_set_database" end
#clear_cache!
Clears the prepared statements cache.
# File 'activerecord/lib/active_record/connection_adapters/abstract_mysql_adapter.rb', line 165
def clear_cache! reload_type_map @statements.clear end
#collation
Returns the database collation strategy.
# File 'activerecord/lib/active_record/connection_adapters/abstract_mysql_adapter.rb', line 276
def collation show_variable "collation_database" end
#create_database(name, options = {})
Create a new MySQL database with optional :charset and :collation. Charset defaults to utf8.
Example:
create_database 'charset_test', charset: 'latin1', collation: 'latin1_bin'
create_database 'matt_development'
create_database 'matt_development', charset: :big5
# File 'activerecord/lib/active_record/connection_adapters/abstract_mysql_adapter.rb', line 250
def create_database(name, = {}) if [:collation] execute "CREATE DATABASE #{quote_table_name(name)} DEFAULT COLLATE #{quote_table_name([:collation])}" else execute "CREATE DATABASE #{quote_table_name(name)} DEFAULT CHARACTER SET #{quote_table_name([:charset] || 'utf8')}" end end
#current_database
[ GitHub ]# File 'activerecord/lib/active_record/connection_adapters/abstract_mysql_adapter.rb', line 266
def current_database query_value("SELECT database()", "SCHEMA") end
#drop_table(table_name, options = {})
Drops a table from the database.
:force-
Set to
:cascadeto drop dependent objects as well. Defaults to false. :if_exists-
Set to
trueto only drop the table if it exists. Defaults to false. :temporary-
Set to
trueto drop temporary table. Defaults to false.
Although this command ignores most options and the block if one is given, it can be helpful to provide these in a migration’s change method so it can be reverted. In that case, options and the block will be used by create_table.
# File 'activerecord/lib/active_record/connection_adapters/abstract_mysql_adapter.rb', line 339
def drop_table(table_name, = {}) execute "DROP#{' TEMPORARY' if [:temporary]} TABLE#{' IF EXISTS' if [:if_exists]} #{quote_table_name(table_name)}#{' CASCADE' if [:force] == :cascade}" end
#empty_insert_statement_value
[ GitHub ]# File 'activerecord/lib/active_record/connection_adapters/abstract_mysql_adapter.rb', line 228
def empty_insert_statement_value "VALUES ()" end
#execute(sql, name = nil)
Executes the SQL statement in the context of this connection.
# File 'activerecord/lib/active_record/connection_adapters/abstract_mysql_adapter.rb', line 184
def execute(sql, name = nil) log(sql, name) do ActiveSupport::Dependencies.interlock.permit_concurrent_loads do @connection.query(sql) end end end
#explain(arel, binds = [])
[ GitHub ]# File 'activerecord/lib/active_record/connection_adapters/abstract_mysql_adapter.rb', line 174
def explain(arel, binds = []) sql = "EXPLAIN #{to_sql(arel, binds)}" start = Time.now result = exec_query(sql, "EXPLAIN", binds) elapsed = Time.now - start MySQL::ExplainPrettyPrinter.new.pp(result, elapsed) end
#foreign_keys(table_name)
# File 'activerecord/lib/active_record/connection_adapters/abstract_mysql_adapter.rb', line 390
def foreign_keys(table_name) raise ArgumentError unless table_name.present? scope = quoted_scope(table_name) fk_info = exec_query(<<-SQL.strip_heredoc, "SCHEMA") SELECT fk.referenced_table_name AS 'to_table', fk.referenced_column_name AS 'primary_key', fk.column_name AS 'column', fk.constraint_name AS 'name', rc.update_rule AS 'on_update', rc.delete_rule AS 'on_delete' FROM information_schema.referential_constraints rc JOIN information_schema.key_column_usage fk USING (constraint_schema, constraint_name) WHERE fk.referenced_column_name IS NOT NULL AND fk.table_schema = #{scope[:schema]} AND fk.table_name = #{scope[:name]} AND rc.constraint_schema = #{scope[:schema]} AND rc.table_name = #{scope[:name]} SQL fk_info.map do |row| = { column: row["column"], name: row["name"], primary_key: row["primary_key"] } [:on_update] = extract_foreign_key_action(row["on_update"]) [:on_delete] = extract_foreign_key_action(row["on_delete"]) ForeignKeyDefinition.new(table_name, row["to_table"], ) end end
#index_algorithms
[ GitHub ]# File 'activerecord/lib/active_record/connection_adapters/abstract_mysql_adapter.rb', line 131
def index_algorithms { default: "ALGORITHM = DEFAULT".dup, copy: "ALGORITHM = COPY".dup, inplace: "ALGORITHM = INPLACE".dup } end
#insert_fixtures_set(fixture_set, tables_to_delete = [])
[ GitHub ]# File 'activerecord/lib/active_record/connection_adapters/abstract_mysql_adapter.rb', line 529
def insert_fixtures_set(fixture_set, tables_to_delete = []) with_multi_statements do super { discard_remaining_results } end end
#native_database_types
[ GitHub ]# File 'activerecord/lib/active_record/connection_adapters/abstract_mysql_adapter.rb', line 127
def native_database_types NATIVE_DATABASE_TYPES end
#recreate_database(name, options = {})
Drops the database specified on the name attribute and creates it again using the provided options.
# File 'activerecord/lib/active_record/connection_adapters/abstract_mysql_adapter.rb', line 236
def recreate_database(name, = {}) drop_database(name) sql = create_database(name, ) reconnect! sql end
#rename_index(table_name, old_name, new_name)
[ GitHub ]# File 'activerecord/lib/active_record/connection_adapters/abstract_mysql_adapter.rb', line 343
def rename_index(table_name, old_name, new_name) if supports_rename_index? validate_index_length!(table_name, new_name) execute "ALTER TABLE #{quote_table_name(table_name)} RENAME INDEX #{quote_table_name(old_name)} TO #{quote_table_name(new_name)}" else super end end
#rename_table(table_name, new_name)
Renames a table.
Example:
rename_table('octopuses', 'octopi')
# File 'activerecord/lib/active_record/connection_adapters/abstract_mysql_adapter.rb', line 319
def rename_table(table_name, new_name) execute "RENAME TABLE #{quote_table_name(table_name)} TO #{quote_table_name(new_name)}" rename_table_indexes(table_name, new_name) end
#show_variable(name)
SHOW VARIABLES LIKE ‘name’
# File 'activerecord/lib/active_record/connection_adapters/abstract_mysql_adapter.rb', line 472
def show_variable(name) query_value("SELECT @@#{name}", "SCHEMA") rescue ActiveRecord::StatementInvalid nil end
#truncate(table_name, name = nil)
[ GitHub ]# File 'activerecord/lib/active_record/connection_adapters/abstract_mysql_adapter.rb', line 280
def truncate(table_name, name = nil) execute "TRUNCATE TABLE #{quote_table_name(table_name)}", name end