2009-06-03 11 views
0

J'ai essayé de google hardcore pour obtenir ce qui crée ce problème, mais rien ne m'a aidé, donc je vais essayer d'écrire ici!ActiveRecord :: StatementInvalid: Mysql :: Erreur:

tout en faisant: User.create (: name => "daniel") ou User.new (: name => 'daniel') sauver dans la console de rails, je reçois cette erreur

.

ActiveRecord :: StatementInvalid: Mysql :: Error: entrée en double '5' pour la touche 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)

Ceci est ma ligne d'ID de table SQL pour "utilisateur"

| id | int (11) | NO | PRI | NULL | auto_increment | Il est sur auto-incrément, et je suis sûr qu'il n'y a pas d'autre entrée avec ID 5!

que se passe-t-il ??

+0

Quelle sortie de journal obtenez-vous si vous avez u = User.find (5)? –

+0

Pouvez-vous publier le contenu de schema.rb pour cette table? – ryanb

Répondre

0

Si vous avez essayé de modifier le moteur de stockage pour cette table de/vers MyISAM/InnoDB et que quelque chose s'est mal passé, alors les index de cette table pourraient avoir été foirés. Essayez de sauvegarder cette base de données en utilisant mysqldump et restaurer en arrière - il pourrait fonctionner: http://www.vbulletin.com/forum/showthread.php?t=141322

0

INSERT INTO utilisateurs (nom, sel, privilegi, confirmed_mail, avatar_id, id , mot de passe, session_num, e-mail) VALUES ('daniel' , '23404', NULL, NULL, NULL, 5, NULL, NULL, NULL)

id est la liste des champs de l'instruction SQL avec la valeur 5. Cela ne semble pas correct. Puisque id est un champ d'incrémentation automatique, il ne doit pas être inclus dans l'instruction SQL.

Voulez-vous publier le code approprié qui remplit l'objet Utilisateur, puis le crée? Je pense à certains où dans votre code vous remplissez l'attribut "id" avec 5 et cela est à l'origine du problème.

0

J'ai eu le même problème, consultez si les index créés sur cette table ne permettent pas les doublons. Cela m'a résolu pour moi