Question

i exporté un tas de tables et les préfixé par « CH_ » et encore les a importés. Tout en utilisant phpmyadmin. Tout fonctionne très bien ... jusqu'à ce que je veux créer quelque chose. Il échoue avec ce message:

user warning: Duplicate entry '4-4' for key 'PRIMARY' query: INSERT INTO ch_node (nid, vid, title, type, uid, status, created, changed, comment, promote, sticky) VALUES (4, 4, 'Nützliche Dokumente', 'page', 1, 1, 1288790996, 1288791130, 0, 0, 0) in /var/www/clients/client20/site60/docroot/includes/database.mysql.inc on line 172.

Alors que les incréments « 4-4 » à chaque fois que je tente de sauver. Cela m'a fait penser à la valeur auto_increment dans le DB est en quelque sorte de mal - bien qu'il ait été correctement spécifié dans mon export.sql. D'où j'ai essayé de réinitialiser la valeur auto_increment à un certain nombre ridicule en utilisant ALTER TABLE some_table AUTO_INCREMENT=10000. Toujours même comportement ...

Quelqu'un une idée de ce qui se passe ici?

Je l'ai fait cette procédure plusieurs fois avant ... mais sans que cela se produise. Il me conduit noix: /

Était-ce utile?

La solution 2

Leçon apprise:

Drupal n'utilise pas la valeur AUTO_INCREMENT de MySQL.

Comme je l'ai appris incrémentation automatique ne fait pas partie de la norme SQL Ansi - c'est juste une chose très commune. Drupal ne veut pas compter sur certaines implémentations de différents SGBDR, donc ils ont une {sequences} de table qui a une colonne pour le nom de la table et la prochaine identifiant qui peut être chargé avec db_next_id ($ nom) . Bien sûr, en préfixant les noms de table, je devais ajouter le préfixe dans la table des séquences ainsi.

Autant il m'a conduit noix en premier lieu, je pense qu'il est une sage décision les développeurs de Drupal fait.

Autres conseils

Alors, votre importation fonctionne très bien, il est seulement quand vous essayez d'insérer un nouveau record après que tout a été importé que vous obtenez cette erreur? Si tel est le cas, alors:

  1. Votre auto_increment n'est pas réglé correctement.
  2. Vous spécifiez une valeur pour votre champ auto_increment.

De la poste ci-dessus, il semble que vous spécifiez une valeur pour votre champ auto_increment. Vous devez mettre à jour votre auto_increment au MAX + 1 de votre table, et puis quand vous ne vous êtes insert, ne spécifiez pas de valeur pour ce champ et MySQL utilisera le auto_increment pour vous ...

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top