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.
- :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
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" |
[ show source ]
# File vendor/rails/activerecord/lib/active_record/connection_adapters/mysql_adapter.rb, line 150
150: def initialize(connection, logger, connection_options, config)
151: super(connection, logger)
152: @connection_options, @config = connection_options, config
153:
154: connect
155: end
CONNECTION MANAGEMENT ====================================
[ show source ]
# File vendor/rails/activerecord/lib/active_record/connection_adapters/mysql_adapter.rb, line 215
215: def active?
216: if @connection.respond_to?(:stat)
217: @connection.stat
218: else
219: @connection.query 'select 1'
220: end
221:
222: # mysql-ruby doesn't raise an exception when stat fails.
223: if @connection.respond_to?(:errno)
224: @connection.errno.zero?
225: else
226: true
227: end
228: rescue Mysql::Error
229: false
230: end
[ show source ]
# File vendor/rails/activerecord/lib/active_record/connection_adapters/mysql_adapter.rb, line 322
322: def current_database
323: select_one("SELECT DATABASE() as db")["db"]
324: end
[ show source ]
# File vendor/rails/activerecord/lib/active_record/connection_adapters/mysql_adapter.rb, line 237
237: def disconnect!
238: @connection.close rescue nil
239: end
QUOTING ==================================================
[ show source ]
# File vendor/rails/activerecord/lib/active_record/connection_adapters/mysql_adapter.rb, line 185
185: def quote(value, column = nil)
186: if value.kind_of?(String) && column && column.type == :binary && column.class.respond_to?(:string_to_binary)
187: s = column.class.string_to_binary(value).unpack("H*")[0]
188: "x'#{s}'"
189: elsif value.kind_of?(BigDecimal)
190: "'#{value.to_s("F")}'"
191: else
192: super
193: end
194: end
[ show source ]
# File vendor/rails/activerecord/lib/active_record/connection_adapters/mysql_adapter.rb, line 208
208: def quoted_false
209: "0"
210: end
[ show source ]
# File vendor/rails/activerecord/lib/active_record/connection_adapters/mysql_adapter.rb, line 204
204: def quoted_true
205: "1"
206: end
[ show source ]
# File vendor/rails/activerecord/lib/active_record/connection_adapters/mysql_adapter.rb, line 232
232: def reconnect!
233: disconnect!
234: connect
235: end
[ show source ]
# File vendor/rails/activerecord/lib/active_record/connection_adapters/mysql_adapter.rb, line 358
358: def rename_table(name, new_name)
359: execute "RENAME TABLE #{name} TO #{new_name}"
360: end