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
” 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.
Methods
- A
- C
- D
- E
- L
- N
- R
- S
- T
Classes and Modules
- CLASS ActiveRecord::ConnectionAdapters::MysqlAdapter::Column
- CLASS ActiveRecord::ConnectionAdapters::MysqlAdapter::StatementPool
Constants
ADAPTER_NAME | = | 'MySQL' |
ENCODINGS | = | { "armscii8" => nil, "ascii" => Encoding::US_ASCII, "big5" => Encoding::Big5, "binary" => Encoding::ASCII_8BIT, "cp1250" => Encoding::Windows_1250, "cp1251" => Encoding::Windows_1251, "cp1256" => Encoding::Windows_1256, "cp1257" => Encoding::Windows_1257, "cp850" => Encoding::CP850, "cp852" => Encoding::CP852, "cp866" => Encoding::IBM866, "cp932" => Encoding::Windows_31J, "dec8" => nil, "eucjpms" => Encoding::EucJP_ms, "euckr" => Encoding::EUC_KR, "gb2312" => Encoding::EUC_CN, "gbk" => Encoding::GBK, "geostd8" => nil, "greek" => Encoding::ISO_8859_7, "hebrew" => Encoding::ISO_8859_8, "hp8" => nil, "keybcs2" => nil, "koi8r" => Encoding::KOI8_R, "koi8u" => Encoding::KOI8_U, "latin1" => Encoding::ISO_8859_1, "latin2" => Encoding::ISO_8859_2, "latin5" => Encoding::ISO_8859_9, "latin7" => Encoding::ISO_8859_13, "macce" => Encoding::MacCentEuro, "macroman" => Encoding::MacRoman, "sjis" => Encoding::SHIFT_JIS, "swe7" => nil, "tis620" => Encoding::TIS_620, "ucs2" => Encoding::UTF_16BE, "ujis" => Encoding::EucJP_ms, "utf8" => Encoding::UTF_8, "utf8mb4" => Encoding::UTF_8, } |
Taken from here: https://github.com/tmtm/ruby-mysql/blob/master/lib/mysql/charset.rb
Author: TOMITA Masahiro |
||
ENCODINGS | = | Hash.new { |h,k| h[k] = k } |
Class Public methods
# File activerecord/lib/active_record/connection_adapters/mysql_adapter.rb, line 126 126: def initialize(connection, logger, connection_options, config) 127: super 128: @statements = StatementPool.new(@connection, 129: config.fetch(:statement_limit) { 1000 }) 130: @client_encoding = nil 131: connect 132: end
Instance Public methods
CONNECTION MANAGEMENT ====================================
# File activerecord/lib/active_record/connection_adapters/mysql_adapter.rb, line 175 175: def active? 176: if @connection.respond_to?(:stat) 177: @connection.stat 178: else 179: @connection.query 'select 1' 180: end 181: 182: # mysql-ruby doesn't raise an exception when stat fails. 183: if @connection.respond_to?(:errno) 184: @connection.errno.zero? 185: else 186: true 187: end 188: rescue Mysql::Error 189: false 190: end
Clears the prepared statements cache.
Get the client encoding for this database
# File activerecord/lib/active_record/connection_adapters/mysql_adapter.rb, line 275 275: def client_encoding 276: return @client_encoding if @client_encoding 277: 278: result = exec_query( 279: "SHOW VARIABLES WHERE Variable_name = 'character_set_client'", 280: 'SCHEMA') 281: @client_encoding = ENCODINGS[result.rows.last.last] 282: end
Disconnects from the database if already connected. Otherwise, this method does nothing.
This method is also aliased as
exec_update
# File activerecord/lib/active_record/connection_adapters/mysql_adapter.rb, line 284 284: def exec_query(sql, name = 'SQL', binds = []) 285: log(sql, name, binds) do 286: exec_stmt(sql, name, binds) do |cols, stmt| 287: ActiveRecord::Result.new(cols, stmt.to_a) if cols 288: end 289: end 290: end
Alias for exec_delete
# File activerecord/lib/active_record/connection_adapters/mysql_adapter.rb, line 204 204: def reset! 205: if @connection.respond_to?(:change_user) 206: # See http://bugs.mysql.com/bug.php?id=33540 -- the workaround way to 207: # reset the connection is to change the user to the same user. 208: @connection.change_user(@config[:username], @config[:password], @config[:database]) 209: configure_connection 210: end 211: end
DATABASE STATEMENTS ======================================
# File activerecord/lib/active_record/connection_adapters/mysql_adapter.rb, line 215 215: def select_rows(sql, name = nil) 216: @connection.query_with_result = true 217: rows = exec_without_stmt(sql, name).rows 218: @connection.more_results && @connection.next_result # invoking stored procedures with CLIENT_MULTI_RESULTS requires this to tidy up else connection will be dropped 219: rows 220: end
Returns true, since this connection adapter supports prepared statement caching.
QUOTING ==================================================