Reset primary keys after swapping events tables
This is required as otherwise newly created events will start with the wrong ID.
This commit is contained in:
parent
5cc140b202
commit
1e1c075d30
|
@ -7,6 +7,10 @@ class SwapEventMigrationTables < ActiveRecord::Migration
|
|||
# Set this constant to true if this migration requires downtime.
|
||||
DOWNTIME = false
|
||||
|
||||
class Event < ActiveRecord::Base
|
||||
self.table_name = 'events'
|
||||
end
|
||||
|
||||
def up
|
||||
rename_tables
|
||||
end
|
||||
|
@ -19,5 +23,25 @@ class SwapEventMigrationTables < ActiveRecord::Migration
|
|||
rename_table :events, :events_old
|
||||
rename_table :events_for_migration, :events
|
||||
rename_table :events_old, :events_for_migration
|
||||
|
||||
# Once swapped we need to reset the primary key of the new "events" table to
|
||||
# make sure that data created starts with the right value. This isn't
|
||||
# necessary for events_for_migration since we replicate existing primary key
|
||||
# values to it.
|
||||
if Gitlab::Database.postgresql?
|
||||
reset_primary_key_for_postgresql
|
||||
else
|
||||
reset_primary_key_for_mysql
|
||||
end
|
||||
end
|
||||
|
||||
def reset_primary_key_for_postgresql
|
||||
reset_pk_sequence!(Event.table_name)
|
||||
end
|
||||
|
||||
def reset_primary_key_for_mysql
|
||||
amount = Event.pluck('COALESCE(MAX(id), 1)').first
|
||||
|
||||
execute "ALTER TABLE #{Event.table_name} AUTO_INCREMENT = #{amount}"
|
||||
end
|
||||
end
|
||||
|
|
Loading…
Reference in New Issue