Ruby on rails 保存模型时出现Postgres错误
所以我一直在搜索,没有找到任何相关的东西。如果有人能帮我,我会非常感激的 在rails中保存模型时,我不断遇到此错误 PG::UniqueViolation:错误:重复键值违反唯一约束“addresses_pkey” 我没有任何索引Ruby on rails 保存模型时出现Postgres错误,ruby-on-rails,postgresql,Ruby On Rails,Postgresql,所以我一直在搜索,没有找到任何相关的东西。如果有人能帮我,我会非常感激的 在rails中保存模型时,我不断遇到此错误 PG::UniqueViolation:错误:重复键值违反唯一约束“addresses_pkey” 我没有任何索引地址\u pkey 我猜主键计数器不知怎么坏了,但不确定如何在Heroku上修复它 它似乎试图在主键中为addresses表创建相同的值,而这不应该发生 作为解决方法,您还可以尝试以下命令: rake db:drop rake db:create rake db:m
地址\u pkey
我猜主键计数器不知怎么坏了,但不确定如何在Heroku上修复它 它似乎试图在主键中为addresses表创建相同的值,而这不应该发生 作为解决方法,您还可以尝试以下命令:
rake db:drop
rake db:create
rake db:migrate
希罗库
heroku pg:reset DATABASE_URL
heroku run rake db:setup
问题是我导入了一些数据,这些数据弄乱了序列,所以我使用这个rake任务重置了所有序列
namespace :db do
desc 'reset sequences for a specific table or all tables'
task sequence_reset: :environment do
sql = <<~SQL
SELECT 'SELECT SETVAL(' ||
quote_literal(quote_ident(PGT.schemaname) || '.' || quote_ident(S.relname)) ||
', COALESCE(MAX(' ||quote_ident(C.attname)|| '), 1) ) FROM ' ||
quote_ident(PGT.schemaname)|| '.'||quote_ident(T.relname)|| ';' as query
FROM pg_class AS S,
pg_depend AS D,
pg_class AS T,
pg_attribute AS C,
pg_tables AS PGT
WHERE S.relkind = 'S'
AND S.oid = D.objid
AND D.refobjid = T.oid
AND D.refobjid = C.attrelid
AND D.refobjsubid = C.attnum
AND T.relname = PGT.tablename
ORDER BY S.relname;
SQL
ActiveRecord::Base.connection.execute(sql).each do |query|
ActiveRecord::Base.connection.execute(query['query'])
end
end
end
名称空间:db do
描述“特定表格或所有表格的重置顺序”
任务序列_重置::环境do
sql=在处理产品数据时,这些并不是真正的选项。但我解决了我的问题。我导入数据时把顺序弄乱了。