| Class | Sequel::Mysql2::Database |
| In: |
lib/sequel/adapters/mysql2.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|This connection is still waiting for a result, try again once you have the result)/ | Mysql::Error messages that indicate the current connection should be disconnected |
| convert_tinyint_to_bool | [RW] | Whether to convert tinyint columns to bool for this database |
Set the convert_tinyint_to_bool setting based on the default value.
# File lib/sequel/adapters/mysql2.rb, line 21
21: def initialize(opts={})
22: super
23: self.convert_tinyint_to_bool = Sequel::MySQL.convert_tinyint_to_bool
24: end
Connect to the database. In addition to the usual database options, the following options have effect:
# File lib/sequel/adapters/mysql2.rb, line 44
44: def connect(server)
45: opts = server_opts(server)
46: opts[:host] ||= 'localhost'
47: opts[:username] ||= opts[:user]
48: conn = ::Mysql2::Client.new(opts)
49:
50: sqls = []
51: # Set encoding a slightly different way after connecting,
52: # in case the READ_DEFAULT_GROUP overrode the provided encoding.
53: # Doesn't work across implicit reconnects, but Sequel doesn't turn on
54: # that feature.
55: if encoding = opts[:encoding] || opts[:charset]
56: sqls << "SET NAMES #{conn.escape(encoding.to_s)}"
57: end
58:
59: # Increase timeout so mysql server doesn't disconnect us.
60: # Value used by default is maximum allowed value on Windows.
61: sqls << "SET @@wait_timeout = #{opts[:timeout] || 2147483}"
62:
63: # By default, MySQL 'where id is null' selects the last inserted id
64: sqls << "SET SQL_AUTO_IS_NULL=0" unless opts[:auto_is_null]
65:
66: sqls.each{|sql| log_yield(sql){conn.query(sql)}}
67:
68: add_prepared_statements_cache(conn)
69: conn
70: end