Rails reset ALL Postgres sequences?

后端 未结 2 1499
耶瑟儿~
耶瑟儿~ 2021-02-01 05:23

The following works in the Rails 3 console to reset Postgres sequences:

ActiveRecord::Base.connection.reset_pk_sequence!(\'menucontrols\')
ActiveRecord::Base.con         


        
相关标签:
2条回答
  • 2021-02-01 06:12

    I found one way to do it from this posting: Reset PostgreSQL

    I placed the following into seed.rb and ran rake db:seed

    ActiveRecord::Base.connection.tables.each do |table|
      result = ActiveRecord::Base.connection.execute("SELECT id FROM #{table} ORDER BY id DESC LIMIT 1") rescue ( puts "Warning: not procesing table #{table}. Id is missing?" ; next )
      ai_val = result.any? ? result.first['id'].to_i + 1 : 1
      puts "Resetting auto increment ID for #{table} to #{ai_val}"
      ActiveRecord::Base.connection.execute("ALTER SEQUENCE #{table}_id_seq RESTART WITH #{ai_val}")
    end
    
    0 讨论(0)
  • 2021-02-01 06:26

    This is easier

    ActiveRecord::Base.connection.tables.each do |t|
      ActiveRecord::Base.connection.reset_pk_sequence!(t)
    end
    
    0 讨论(0)
提交回复
热议问题