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.

  • :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

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 environment.rb file:

ActiveRecord::ConnectionAdapters::MysqlAdapter.emulate_booleans = false
Methods
A
C
D
N
Q
R
Constants
LOST_CONNECTION_ERROR_MESSAGES = [ "Server shutdown in progress", "Broken pipe", "Lost connection to MySQL server during query", "MySQL server has gone away" ]
 
Class Public methods
new(connection, logger, connection_options, config)
# File rails/activerecord/lib/active_record/connection_adapters/mysql_adapter.rb, line 148
def initialize(connection, logger, connection_options, config)
  super(connection, logger)
  @connection_options, @config = connection_options, config

  connect
end
Instance Public methods
active?()

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

# File rails/activerecord/lib/active_record/connection_adapters/mysql_adapter.rb, line 213
def active?
  if @connection.respond_to?(:stat)
    @connection.stat
  else
    @connection.query 'select 1'
  end

  # mysql-ruby doesn't raise an exception when stat fails.
  if @connection.respond_to?(:errno)
    @connection.errno.zero?
  else
    true
  end
rescue Mysql::Error
  false
end
current_database()
# File rails/activerecord/lib/active_record/connection_adapters/mysql_adapter.rb, line 320
def current_database
  select_one("SELECT DATABASE() as db")["db"]
end
disconnect!()
# File rails/activerecord/lib/active_record/connection_adapters/mysql_adapter.rb, line 235
def disconnect!
  @connection.close rescue nil
end
quote(value, column = nil)

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

# File rails/activerecord/lib/active_record/connection_adapters/mysql_adapter.rb, line 183
def quote(value, column = nil)
  if value.kind_of?(String) && column && column.type == :binary && column.class.respond_to?(:string_to_binary)
    s = column.class.string_to_binary(value).unpack("H*")[0]
    "x'#{s}'"
  elsif value.kind_of?(BigDecimal)
    "'#{value.to_s("F")}'"
  else
    super
  end
end
quoted_false()
# File rails/activerecord/lib/active_record/connection_adapters/mysql_adapter.rb, line 206
def quoted_false
  "0"
end
quoted_true()
# File rails/activerecord/lib/active_record/connection_adapters/mysql_adapter.rb, line 202
def quoted_true
  "1"
end
reconnect!()
# File rails/activerecord/lib/active_record/connection_adapters/mysql_adapter.rb, line 230
def reconnect!
  disconnect!
  connect
end
rename_table(name, new_name)
# File rails/activerecord/lib/active_record/connection_adapters/mysql_adapter.rb, line 356
def rename_table(name, new_name)
  execute "RENAME TABLE #{name} TO #{new_name}"
end