ActiveRecord::ConnectionAdapters::MysqlAdapter

The MySQL adapter will work with both Ruby/MySQL, which is a Ruby-based MySQL adapter that comes bundled with Active Record, and with the faster C-based MySQL/Ruby adapter (available both as a gem and from www.tmtm.org/en/mysql/ruby/).

Options:

  • :host - Defaults to “localhost”.

  • :port - Defaults to 3306.

  • :socket - Defaults to “/tmp/mysql.sock”.

  • :username - Defaults to “root”

  • :password - Defaults to nothing.

  • :database - The name of the database. No default, must be provided.

  • :encoding - (Optional) Sets the client encoding by executing “SET NAMES <encoding>” after connection.

  • :reconnect - Defaults to false (See MySQL documentation: dev.mysql.com/doc/refman/5.0/en/auto-reconnect.html).

  • :sslca - Necessary to use MySQL with an SSL connection.

  • :sslkey - Necessary to use MySQL with an SSL connection.

  • :sslcert - Necessary to use MySQL with an SSL connection.

  • :sslcapath - Necessary to use MySQL with an SSL connection.

  • :sslcipher - Necessary to use MySQL with an SSL connection.


QUOTED_FALSE = '1'.freeze, '0'.freeze

ADAPTER_NAME = 'MySQL'.freeze

LOST_CONNECTION_ERROR_MESSAGES = [
"Server shutdown in progress",
"Broken pipe",
"Lost connection to MySQL server during query",
"MySQL server has gone away" ]

NATIVE_DATABASE_TYPES = {
:primary_key => "int(11) DEFAULT NULL auto_increment PRIMARY KEY".freeze,
:string      => { :name => "varchar", :limit => 255 },
:text        => { :name => "text" },
:integer     => { :name => "int", :limit => 4 },
:float       => { :name => "float" },
:decimal     => { :name => "decimal" },
:datetime    => { :name => "datetime" },
:timestamp   => { :name => "datetime" },
:time        => { :name => "time" },
:date        => { :name => "date" },
:binary      => { :name => "blob" },
:boolean     => { :name => "tinyint", :limit => 1 }
}

emulate_booleans ()

By default, the MysqlAdapter will consider all columns of type tinyint(1) as boolean. If you wish to disable this emulation (which was the default behavior in versions 0.13.1 and earlier) you can add the following line to your application.rb file:

ActiveRecord::ConnectionAdapters::MysqlAdapter.emulate_booleans = false

primary_key (table)

Returns just a table’s primary key

type_to_sql (type, limit = nil, precision = nil, scale = nil)

Maps logical Rails types to MySQL-specific data types.

active? ()

CONNECTION MANAGEMENT ====================================

charset ()

Returns the database character set.

quote (value, column = nil)

QUOTING ==================================================

select_rows (sql, name = nil)

DATABASE STATEMENTS ======================================

collation ()

Returns the database collation strategy.

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

show_variable (name)

SHOW VARIABLES LIKE ‘name’