rails ahoy gem - 主键id和autoincrement给出重复的条目

时间:2018-02-04 09:55:32

标签: ruby-on-rails mysql2

我在我的rails应用程序中遇到了很少的访问模型问题

我有很多

Mysql2::Error: Duplicate entry '$$' for key 'PRIMARY': INSERT INTO `visits`

其中$$是数字

当我打印最后的记录时

Visits=Visit.find(:all, :order => "started_at desc", :limit => 5)
Visits.each do |visit| puts "#{visit.id} -- #{visit.started_at}" end

显示是

99904352 - 2018-02-01 11:32:51 UTC

8918 - 2018 - 02-01 09:59:04 UTC

90866 - 2018-02-01 09:09:10 UTC

99904351 - 2018-02-01 09:03:00 UTC

99904350 - 2018-02-01 08:58:24 UTC

我已经尝试重置自动增量值

ALTER TABLE visits AUTO_INCREMENT = max_value+1;

没有成功..

任何想法?我想避免转储/删除/重新加载DB

谢谢!

2 个答案:

答案 0 :(得分:3)

当您发现重复键错误时,例如 Mysql2 ::错误:键'PRIMARY'的重复条目'$$':INSERT INTO visits ,您应该检查两件事:

  • 如果您插入设置密钥的记录
  • 如果自动增量值不是更大的键。

当然,您必须更改程序以避免插入设置密钥的记录,并且必须将自动增量值更新为下一个可用的值。为此,请搜索最大值并将其设置为下一个值。

Select max(id) from visits;
ALTER TABLE visits AUTO_INCREMENT = max_value + 1;

答案 1 :(得分:0)

确定 我有一个假的before_create试图用uuid而不是整数来设置id ..我已经评论了..我必须等待,但我相信那是我的问题..

我的坏:p