diff options
author | Ryuta Kamizono <kamipo@gmail.com> | 2019-04-08 23:54:07 +0900 |
---|---|---|
committer | GitHub <noreply@github.com> | 2019-04-08 23:54:07 +0900 |
commit | 652ce83a4d8882cc964dbe168c9ca8ea67096810 (patch) | |
tree | 685b5d546937dc8f48418b0d31133980e785088d /activerecord/lib | |
parent | dbd3ce616076fc5688cea67e124676ee504bcb1b (diff) | |
parent | c24efdbd2720bd4d936a3ffab0c22af0a718d2f1 (diff) | |
download | rails-652ce83a4d8882cc964dbe168c9ca8ea67096810.tar.gz rails-652ce83a4d8882cc964dbe168c9ca8ea67096810.tar.bz2 rails-652ce83a4d8882cc964dbe168c9ca8ea67096810.zip |
Merge pull request #35854 from boblail/fix-bug-with-insert_all-on-mysql
When skipping duplicates in bulk insert on MySQL, avoid assigning an AUTONUMBER column when not specified
Diffstat (limited to 'activerecord/lib')
-rw-r--r-- | activerecord/lib/active_record/connection_adapters/abstract_mysql_adapter.rb | 4 | ||||
-rw-r--r-- | activerecord/lib/active_record/insert_all.rb | 4 |
2 files changed, 4 insertions, 4 deletions
diff --git a/activerecord/lib/active_record/connection_adapters/abstract_mysql_adapter.rb b/activerecord/lib/active_record/connection_adapters/abstract_mysql_adapter.rb index f5da19f0f6..ca8bbc14da 100644 --- a/activerecord/lib/active_record/connection_adapters/abstract_mysql_adapter.rb +++ b/activerecord/lib/active_record/connection_adapters/abstract_mysql_adapter.rb @@ -516,8 +516,8 @@ module ActiveRecord sql = +"INSERT #{insert.into} #{insert.values_list}" if insert.skip_duplicates? - any_column = quote_column_name(insert.model.columns.first.name) - sql << " ON DUPLICATE KEY UPDATE #{any_column}=#{any_column}" + no_op_column = quote_column_name(insert.keys.first) + sql << " ON DUPLICATE KEY UPDATE #{no_op_column}=#{no_op_column}" elsif insert.update_duplicates? sql << " ON DUPLICATE KEY UPDATE " sql << insert.updatable_columns.map { |column| "#{column}=VALUES(#{column})" }.join(",") diff --git a/activerecord/lib/active_record/insert_all.rb b/activerecord/lib/active_record/insert_all.rb index 4b02d40aa0..d7808919ee 100644 --- a/activerecord/lib/active_record/insert_all.rb +++ b/activerecord/lib/active_record/insert_all.rb @@ -111,7 +111,7 @@ module ActiveRecord class Builder attr_reader :model - delegate :skip_duplicates?, :update_duplicates?, to: :insert_all + delegate :skip_duplicates?, :update_duplicates?, :keys, to: :insert_all def initialize(insert_all) @insert_all, @model, @connection = insert_all, insert_all.model, insert_all.connection @@ -122,7 +122,7 @@ module ActiveRecord end def values_list - types = extract_types_from_columns_on(model.table_name, keys: insert_all.keys) + types = extract_types_from_columns_on(model.table_name, keys: keys) values_list = insert_all.map_key_with_value do |key, value| bind = Relation::QueryAttribute.new(key, value, types[key]) |