diff options
author | Eileen M. Uchitelle <eileencodes@users.noreply.github.com> | 2017-12-07 07:58:21 -0500 |
---|---|---|
committer | GitHub <noreply@github.com> | 2017-12-07 07:58:21 -0500 |
commit | bbacd60048a8efa1777a01292a9392e146a7d885 (patch) | |
tree | 8b2b0cdefaf456cf6b9461d5117bf66be3ef6552 /activerecord/lib/active_record/connection_adapters | |
parent | e2c1d5e1d73322945c6d0477c5d8a004479e6b7a (diff) | |
parent | 5ac4f4d2563e7f9c5ffaecce4be4b9e2c5b0c081 (diff) | |
download | rails-bbacd60048a8efa1777a01292a9392e146a7d885.tar.gz rails-bbacd60048a8efa1777a01292a9392e146a7d885.tar.bz2 rails-bbacd60048a8efa1777a01292a9392e146a7d885.zip |
Merge pull request #31327 from aellispierce/custom-id-change-table-sqlite
Fix sqlite migrations with custom primary keys
Diffstat (limited to 'activerecord/lib/active_record/connection_adapters')
-rw-r--r-- | activerecord/lib/active_record/connection_adapters/sqlite3_adapter.rb | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/activerecord/lib/active_record/connection_adapters/sqlite3_adapter.rb b/activerecord/lib/active_record/connection_adapters/sqlite3_adapter.rb index 574a7b4572..65aba20052 100644 --- a/activerecord/lib/active_record/connection_adapters/sqlite3_adapter.rb +++ b/activerecord/lib/active_record/connection_adapters/sqlite3_adapter.rb @@ -404,10 +404,11 @@ module ActiveRecord def copy_table(from, to, options = {}) from_primary_key = primary_key(from) + from_primary_key_column = columns(from).select { |column| column.name == from_primary_key }.first options[:id] = false create_table(to, options) do |definition| @definition = definition - @definition.primary_key(from_primary_key) if from_primary_key.present? + @definition.primary_key(from_primary_key, from_primary_key_column.type) if from_primary_key.present? columns(from).each do |column| column_name = options[:rename] ? (options[:rename][column.name] || @@ -431,6 +432,9 @@ module ActiveRecord def copy_table_indexes(from, to, rename = {}) indexes(from).each do |index| name = index.name + # indexes sqlite creates for internal use start with `sqlite_` and + # don't need to be copied + next if name.starts_with?("sqlite_") if to == "a#{from}" name = "t#{name}" elsif from == "a#{to}" |