ActiveRecord :: StatementInvalid: Mysql :: Ошибка: - PullRequest
0 голосов
/ 03 июня 2009

Я пытался Google хардкор, чтобы получить то, что создает эту проблему, но ничего не помогло мне, поэтому я пытаюсь написать здесь!

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 |    

Это на автоинкременте, и я уверен, что нет другой записи с идентификатором 5!

что происходит ??

Ответы [ 3 ]

0 голосов
/ 22 июня 2009
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, а затем создает его? Я думаю, что где-то в вашем коде вы заполняете атрибут "id" 5, и это вызывает проблему.

0 голосов
/ 16 июля 2009

У меня была такая же проблема, проверьте, есть ли какие-либо индексы, созданные в этой таблице, которые не допускают дублирования. Это решило это для меня

0 голосов
/ 04 июня 2009

Если вы попытались изменить механизм хранения для этой таблицы с / на MyISAM / InnoDB и что-то пошло не так, то индексы в этой таблице могли быть испорчены. Попробуйте создать резервную копию этой базы данных, используя mysqldump, и восстановите ее обратно - она ​​может работать: http://www.vbulletin.com/forum/showthread.php?t=141322

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...