gpt4 book ai didi

ruby-on-rails - 生成的重复 ID 违反了主键约束

转载 作者:行者123 更新时间:2023-11-29 11:33:57 34 4
gpt4 key购买 nike

谁能帮忙解释一下?我正在使用 Populator 和 Faker gems 将一些生成的数据放入我的数据库中。除其他事项外,我生成了 10,000 条评论(来自 'acts_as_commentable' gem。所有这些都有效。但是,当我添加新评论时,我收到一条错误消息,提示我使用现有 ID 违反了主键.看看下面我的控制台输出。你可以看到我有 10,000 条记录,从 ID 1 开始到 ID 100000 结束。然后我尝试添加一个新的评论,但它失败了。这只发生在这个模型/表上。我可以添加新用户等

>> Comment.first(:order => 'id').id
=> 1
>> Comment.last(:order => 'id').id
=> 10000
>> Comment.count
=> 10000
>> Comment.create(:title => 'wtf is up?')
ActiveRecord::RecordNotUnique: PGError: ERROR: duplicate key value violates unique constraint "comments_pkey"
DETAIL: Key (id)=(1) already exists.

我怀疑这与 Populator gem 如何将记录分批放入数据库有关。它只发生在我使用 Populator 看到的模型/表上。

最佳答案

如果在插入语句中明确设置了 id 列的值,就会发生这种情况。

对于每个id-column,Postgres 中都有一个序列,通常命名为tablename_columnname_seq,例如user_id_seq。

请检查 pgadmin3 表定义中的名称,因为 rails 不支持具有其他名称的序列。

您可以通过执行类似以下操作来修复 ID 太低的序列:

SELECT setval('user_id_seq', 10000);

学习最高数: 从用户中选择最大(id);

SELECT max(x) FROM 
(SELECT max(id) As x FROM users
UNION SELECT last_value As x FROM user_id_seq As y);

关于ruby-on-rails - 生成的重复 ID 违反了主键约束,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4172576/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com