Class | Sequel::MySQL::Database |
In: |
lib/sequel/adapters/mysql.rb
|
Parent: | Sequel::Database |
MYSQL_DATABASE_DISCONNECT_ERRORS | = | /\A(Commands out of sync; you can't run this command now|Can't connect to local MySQL server through socket|MySQL server has gone away)/ | Mysql::Error messages that indicate the current connection should be disconnected |
Connect to the database. In addition to the usual database options, the following options have effect:
# File lib/sequel/adapters/mysql.rb, line 97 97: def connect(server) 98: opts = server_opts(server) 99: conn = Mysql.init 100: conn.options(Mysql::READ_DEFAULT_GROUP, opts[:config_default_group] || "client") 101: conn.options(Mysql::OPT_LOCAL_INFILE, opts[:config_local_infile]) if opts.has_key?(:config_local_infile) 102: if encoding = opts[:encoding] || opts[:charset] 103: # Set encoding before connecting so that the mysql driver knows what 104: # encoding we want to use, but this can be overridden by READ_DEFAULT_GROUP. 105: conn.options(Mysql::SET_CHARSET_NAME, encoding) 106: end 107: conn.real_connect( 108: opts[:host] || 'localhost', 109: opts[:user], 110: opts[:password], 111: opts[:database], 112: opts[:port], 113: opts[:socket], 114: Mysql::CLIENT_MULTI_RESULTS + 115: Mysql::CLIENT_MULTI_STATEMENTS + 116: (opts[:compress] == false ? 0 : Mysql::CLIENT_COMPRESS) 117: ) 118: sqls = [] 119: # Set encoding a slightly different way after connecting, 120: # in case the READ_DEFAULT_GROUP overrode the provided encoding. 121: # Doesn't work across implicit reconnects, but Sequel doesn't turn on 122: # that feature. 123: sqls << "SET NAMES #{literal(encoding.to_s)}" if encoding 124: 125: # increase timeout so mysql server doesn't disconnect us 126: sqls << "SET @@wait_timeout = #{opts[:timeout] || 2592000}" 127: 128: # By default, MySQL 'where id is null' selects the last inserted id 129: sqls << "SET SQL_AUTO_IS_NULL=0" unless opts[:auto_is_null] 130: 131: sqls.each{|sql| log_yield(sql){conn.query(sql)}} 132: 133: class << conn 134: attr_accessor :prepared_statements 135: end 136: conn.prepared_statements = {} 137: conn 138: end
Returns instance of Sequel::MySQL::Dataset with the given options.
# File lib/sequel/adapters/mysql.rb, line 141 141: def dataset(opts = nil) 142: MySQL::Dataset.new(self, opts) 143: end
Executes the given SQL using an available connection, yielding the connection if the block is given.
# File lib/sequel/adapters/mysql.rb, line 147 147: def execute(sql, opts={}, &block) 148: if opts[:sproc] 149: call_sproc(sql, opts, &block) 150: elsif sql.is_a?(Symbol) 151: execute_prepared_statement(sql, opts, &block) 152: else 153: synchronize(opts[:server]){|conn| _execute(conn, sql, opts, &block)} 154: end 155: end