From 8baca31dbe522cb407f0b3b8c8d3d4a6804e5aed Mon Sep 17 00:00:00 2001 From: Ryuta Kamizono Date: Fri, 26 Jan 2018 12:42:28 +0900 Subject: Bring back ability to insert zero value on primary key for fixtures (#31795) Since #29504, mysql2 adapter lost ability to insert zero value on primary key due to enforce `NO_AUTO_VALUE_ON_ZERO` disabled. That is for using `DEFAULT` on auto increment column, but we can use `NULL` instead in that case. --- .../connection_adapters/abstract/database_statements.rb | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) (limited to 'activerecord/lib/active_record/connection_adapters/abstract') diff --git a/activerecord/lib/active_record/connection_adapters/abstract/database_statements.rb b/activerecord/lib/active_record/connection_adapters/abstract/database_statements.rb index d663b59444..08f3e15a4b 100644 --- a/activerecord/lib/active_record/connection_adapters/abstract/database_statements.rb +++ b/activerecord/lib/active_record/connection_adapters/abstract/database_statements.rb @@ -414,6 +414,9 @@ module ActiveRecord alias join_to_delete join_to_update private + def default_insert_value(column) + Arel.sql("DEFAULT") + end def build_fixture_sql(fixtures, table_name) columns = schema_cache.columns_hash(table_name) @@ -432,7 +435,7 @@ module ActiveRecord bind = Relation::QueryAttribute.new(name, fixture[name], type) with_yaml_fallback(bind.value_for_database) else - Arel.sql("DEFAULT") + default_insert_value(column) end end end -- cgit v1.2.3