diff options
author | Sean Griffin <sean@seantheprogrammer.com> | 2015-11-19 09:30:18 -0700 |
---|---|---|
committer | Sean Griffin <sean@seantheprogrammer.com> | 2015-11-19 09:38:27 -0700 |
commit | 8246b593bff71f2cebf274c133bb8917f1e094c8 (patch) | |
tree | 0499bf109010d3c96becd121141dacbe39f5bcc5 /activerecord/test/cases | |
parent | 7e200f2973fd063b4819bfc584ef7b4b3e66603d (diff) | |
download | rails-8246b593bff71f2cebf274c133bb8917f1e094c8.tar.gz rails-8246b593bff71f2cebf274c133bb8917f1e094c8.tar.bz2 rails-8246b593bff71f2cebf274c133bb8917f1e094c8.zip |
Allow specifying the default table options for mysql adapters
It's often the case that you want to have an option that you cannot
specify at the database level, but want applied to *all* tables that you
create. For example, you might want to specify `ROW_FORMAT=DYNAMIC` to
not have to limit text columns to length 171 for indexing when using
utf8mb4. This allows an easy way to specify this in your database
configuration.
While this change affects both MySQL and MySQL2, the test only covers
MySQL2, as the legacy mysql adapter appears to always return ASCII
strings, and is tangential to what we're actually doing.
Diffstat (limited to 'activerecord/test/cases')
-rw-r--r-- | activerecord/test/cases/migration_test.rb | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/activerecord/test/cases/migration_test.rb b/activerecord/test/cases/migration_test.rb index c3c204cf9f..58cbb80e31 100644 --- a/activerecord/test/cases/migration_test.rb +++ b/activerecord/test/cases/migration_test.rb @@ -1020,4 +1020,23 @@ class CopyMigrationsTest < ActiveRecord::TestCase ActiveRecord::Base.logger = old end + if current_adapter?(:Mysql2Adapter) + def test_default_table_options + config = ActiveRecord::Base.configurations['arunit'].merge( + encoding: 'utf8mb4', + default_table_options: "ENGINE=InnoDB CHARACTER SET utf8mb4", + ) + ActiveRecord::Base.establish_connection(config) + + ActiveRecord::Base.connection.create_table(:foos) do |t| + t.string :emoji + end + ActiveRecord::Base.connection.execute("INSERT INTO foos (emoji) VALUES ('💩')") + emoji = ActiveRecord::Base.connection.execute("SELECT emoji FROM foos").first.first + assert_equal "💩", emoji + ensure + ActiveRecord::Base.connection.drop_table(:foos, if_exists: true) + ActiveRecord::Base.establish_connection(:arunit) + end + end end |