| Class | ActiveRecord::ConnectionAdapters::MysqlAdapter |
| In: |
vendor/rails/activerecord/lib/active_record/connection_adapters/mysql_adapter.rb
|
| Parent: | AbstractAdapter |
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:
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
| LOST_CONNECTION_ERROR_MESSAGES | = | [ "Server shutdown in progress", "Broken pipe", "Lost connection to MySQL server during query", "MySQL server has gone away" |
# File vendor/rails/activerecord/lib/active_record/connection_adapters/mysql_adapter.rb, line 163
163: def initialize(connection, logger, connection_options, config)
164: super(connection, logger)
165: @connection_options, @config = connection_options, config
166:
167: connect
168: end
CONNECTION MANAGEMENT ====================================
# File vendor/rails/activerecord/lib/active_record/connection_adapters/mysql_adapter.rb, line 244
244: def active?
245: if @connection.respond_to?(:stat)
246: @connection.stat
247: else
248: @connection.query 'select 1'
249: end
250:
251: # mysql-ruby doesn't raise an exception when stat fails.
252: if @connection.respond_to?(:errno)
253: @connection.errno.zero?
254: else
255: true
256: end
257: rescue Mysql::Error
258: false
259: end
Returns the database character set.
# File vendor/rails/activerecord/lib/active_record/connection_adapters/mysql_adapter.rb, line 376
376: def charset
377: show_variable 'character_set_database'
378: end
Create a new MySQL database with optional :charset and :collation. Charset defaults to utf8.
Example:
create_database 'charset_test', :charset => 'latin1', :collation => 'latin1_bin' create_database 'matt_development' create_database 'matt_development', :charset => :big5
# File vendor/rails/activerecord/lib/active_record/connection_adapters/mysql_adapter.rb, line 359
359: def create_database(name, options = {})
360: if options[:collation]
361: execute "CREATE DATABASE `#{name}` DEFAULT CHARACTER SET `#{options[:charset] || 'utf8'}` COLLATE `#{options[:collation]}`"
362: else
363: execute "CREATE DATABASE `#{name}` DEFAULT CHARACTER SET `#{options[:charset] || 'utf8'}`"
364: end
365: end
# File vendor/rails/activerecord/lib/active_record/connection_adapters/mysql_adapter.rb, line 371
371: def current_database
372: select_value 'SELECT DATABASE() as db'
373: end
# File vendor/rails/activerecord/lib/active_record/connection_adapters/mysql_adapter.rb, line 266
266: def disconnect!
267: @connection.close rescue nil
268: end
# File vendor/rails/activerecord/lib/active_record/connection_adapters/mysql_adapter.rb, line 391
391: def drop_table(table_name, options = {})
392: super(table_name, options)
393: end
QUOTING ==================================================
# File vendor/rails/activerecord/lib/active_record/connection_adapters/mysql_adapter.rb, line 198
198: def quote(value, column = nil)
199: if value.kind_of?(String) && column && column.type == :binary && column.class.respond_to?(:string_to_binary)
200: s = column.class.string_to_binary(value).unpack("H*")[0]
201: "x'#{s}'"
202: elsif value.kind_of?(BigDecimal)
203: "'#{value.to_s("F")}'"
204: else
205: super
206: end
207: end
# File vendor/rails/activerecord/lib/active_record/connection_adapters/mysql_adapter.rb, line 225
225: def quoted_false
226: "0"
227: end
# File vendor/rails/activerecord/lib/active_record/connection_adapters/mysql_adapter.rb, line 221
221: def quoted_true
222: "1"
223: end
# File vendor/rails/activerecord/lib/active_record/connection_adapters/mysql_adapter.rb, line 261
261: def reconnect!
262: disconnect!
263: connect
264: end
# File vendor/rails/activerecord/lib/active_record/connection_adapters/mysql_adapter.rb, line 421
421: def rename_table(table_name, new_name)
422: execute "RENAME TABLE #{quote_table_name(table_name)} TO #{quote_table_name(new_name)}"
423: end
DATABASE STATEMENTS ======================================
# File vendor/rails/activerecord/lib/active_record/connection_adapters/mysql_adapter.rb, line 273
273: def select_rows(sql, name = nil)
274: @connection.query_with_result = true
275: result = execute(sql, name)
276: rows = []
277: result.each { |row| rows << row }
278: result.free
279: rows
280: end