class Sequel::Mysql2::Database

  1. lib/sequel/adapters/mysql2.rb
Parent: Mysql2

Database class for MySQL databases used with Sequel.

Attributes

convert_tinyint_to_bool [RW]

Whether to convert tinyint columns to bool for this database

Public Instance methods

connect (server)

Connect to the database. In addition to the usual database options, the following options have effect:

  • :auto_is_null - Set to true to use MySQL default behavior of having a filter for an autoincrement column equals NULL to return the last inserted row.

  • :charset - Same as :encoding (:encoding takes precendence)

  • :encoding - Set all the related character sets for this connection (connection, client, database, server, and results).

The options hash is also passed to mysql2, and can include mysql2 options such as :local_infile.

[show source]
# File lib/sequel/adapters/mysql2.rb, line 29
def connect(server)
  opts = server_opts(server)
  opts[:host] ||= 'localhost'
  opts[:username] ||= opts.delete(:user)
  opts[:flags] ||= 0
  opts[:flags] |= ::Mysql2::Client::FOUND_ROWS if ::Mysql2::Client.const_defined?(:FOUND_ROWS)
  conn = ::Mysql2::Client.new(opts)
  conn.query_options.merge!(:symbolize_keys=>true, :cache_rows=>false)

  sqls = mysql_connection_setting_sqls

  # Set encoding a slightly different way after connecting,
  # in case the READ_DEFAULT_GROUP overrode the provided encoding.
  # Doesn't work across implicit reconnects, but Sequel doesn't turn on
  # that feature.
  if encoding = opts[:encoding] || opts[:charset]
    sqls.unshift("SET NAMES #{conn.escape(encoding.to_s)}")
  end

  sqls.each{|sql| log_yield(sql){conn.query(sql)}}

  add_prepared_statements_cache(conn)
  conn
end
execute_dui (sql, opts=OPTS)

Return the number of matched rows when executing a delete/update statement.

[show source]
# File lib/sequel/adapters/mysql2.rb, line 55
def execute_dui(sql, opts=OPTS)
  execute(sql, opts){|c| return c.affected_rows}
end
execute_insert (sql, opts=OPTS)

Return the last inserted id when executing an insert statement.

[show source]
# File lib/sequel/adapters/mysql2.rb, line 60
def execute_insert(sql, opts=OPTS)
  execute(sql, opts){|c| return c.last_id}
end
server_version (server=nil)

Return the version of the MySQL server two which we are connecting.

[show source]
# File lib/sequel/adapters/mysql2.rb, line 65
def server_version(server=nil)
  @server_version ||= (synchronize(server){|conn| conn.server_info[:id]} || super)
end