我试图谷歌硬核得到什么造成了这个问题,但没有什么帮助我,所以我想写在这里!
while doing:
User.create(:name => "daniel")
or
User.new(:name => 'daniel').save
在rails控制台中,我收到此错误
ActiveRecord::StatementInvalid: Mysql::Error: Duplicate entry '5' for key 1:
INSERT INTO `users` (`name`, `salt`, `privilegi`, `confirmed_mail`, `avatar_id`, `id`, `password`, `session_num`, `email`) VALUES('daniel', '23404', NULL, NULL, NULL, 5, NULL, NULL, NULL)
这是“用户”的SQL表格行
| id | int(11) | NO | PRI | NULL | auto_increment |
它是自动增量,我确定没有其他ID为5的条目!
发生了什么事?
答案 0 :(得分:0)
如果您尝试将此表的存储引擎从/更改为MyISAM / InnoDB并出现问题,则此表中的索引可能已经搞砸了。尝试使用mysqldump备份此数据库并将其恢复 - 它可能有效:http://www.vbulletin.com/forum/showthread.php?t=141322
答案 1 :(得分:0)
INSERT INTO users (name, salt, privilegi, confirmed_mail, avatar_id, id, password, session_num, email)
VALUES ('daniel', '23404', NULL, NULL, NULL, 5, NULL, NULL, NULL)
id是SQL语句的字段列表,值为5.这似乎不正确。由于id是自动增量字段,因此不应包含在SQL语句中。
您是否会发布填充User对象然后创建它的相关代码?我认为你的代码中的某个地方用5填充了“id”属性,这导致了问题。
答案 2 :(得分:0)
我遇到了同样的问题,请查看是否在此表上创建的任何索引都不允许重复。这解决了我的问题