mysql-spielereien: nodes importieren
am 04.09.2006 - 13:15 Uhr in
hallo,
spassenshalber habe ich mich mal an meinem test-server vergriffen, seither kann ich keine neuen beitraege mehr speichern und bekomme eine fehlermeldung "user warning: Duplicate entry..." auf die node-id in tbl node_revisions. ursache scheint ein counter zu sein, den ich jetzt suche.
was habe ich gemacht:
aus einer funktionierenden Drupal/MySQL-installation habe ich die tabellen node und node_revisions exportiert. dann habe ich das MySQL-RDBMS v5.1 ordentlich entfernt und eine neues erstellt.
darin habe ich die Drupal-DB installiert, hochgefahren, Drupal v473 neu installiert, user angelegt und die exportierten node-tabellen importiert. weiter das blog- und das sitemenu-modul aktiviert.
die nodes erschienen auch alle, zusaetzlich habe ich kategorien angelegt und per hand alle, beziehungsweise relativ wenige an der zahl, diesen kategorien zugeordnet. dabei habe ich alle nicht-blog-eintraege geloescht und die blogeintraege den erstellten kategorien zugeordnet.
laeuft prima, die arbeit ist natuerlich sinnfrei auf einer grossen installation.
was passierte dann:
als naechsten schritt wollte ich einen neuen blogeintrag anlegen, aber wenn ich im frontend den speichern-befehl ausloese, bekomme ich die fehlermeldung user warning: Duplicate entry[..].
er moniert, dass fuer die id, die er belegen moechte, schon ein eintrag vorhanden ist; dabei bezieht er sich mal auf die tbl node und mal auf tbl node_revisions.
wenn der eben neu erzeugte eintrag nach dem speichern angezeigt werden soll, wird der erste node in der ganzen DB angezeigt, beziehungsweise der zweite beim zweiten versuch und so weiter.
als ergaenzung und eventuellen zusammenhang:
die indizierung der suche laeuft auch nicht mehr ganz rund.
ich habe Drupal den index erzeugen und auch mal updaten lassen und kann auch erfolgreich die suche benutzen. aber trotzdem wird mir immer angezeigt, er habe erst 0% von xx dateien indiziert.
mich interessiert, wo dieser counter abgelegt wird und was ich vielleicht nicht beachtet oder falsch gemacht habe.
hat die angeblich nicht erfolgreiche indizierung etwas mit erstgeschildertem problem zu tun?
vielen dank
ag
- Anmelden oder Registrieren um Kommentare zu schreiben
Repair table
am 04.09.2006 - 16:35 Uhr
Hast du schon versucht die betroffene Tabelle zu reparieren?
msql-> repair table node_revisions;
Hat mir bei anderen Fehlern schon oft geholfen.
vg, md - drupalcenter
--
www.mdwp.de
table okay
am 04.09.2006 - 17:09 Uhr
die tables sind an sich konsistent.
hier ist die meldung:
user warning: Duplicate entry '5' for key 'PRIMARY' query: INSERT INTO node_revisions (nid, vid, title, body, teaser, log, timestamp, uid, format) VALUES (5, 5, 'test', 'sdfsdf', 'sdfsdf', '', 1157385690, 1, 1) in /[..]/includes/database.mysql.inc on line 120.
fuer die DB muss es auch okay sein, weil es fuer die node-ids auch einen gegenschluessel gibt.
Drupal will diesen wert ja ueberschreiben, indem er eine vorhandene node-id nutzt.
und da mault dann jemand zu recht;)
ag
Dann schau mal
am 04.09.2006 - 17:21 Uhr
in der Sequences Table nach, ob es da einen Eintrag für node_revisions gibt.
vg, md - drupalcenter
--
www.mdwp.de
ER-dia
am 04.09.2006 - 22:43 Uhr
ja, den gibt es. der hilft mir so direkt nicht weiter, obwohl ich schon einige zaehler manipuliert habe. irgendwo sind noch relations versteckt.
ich bin gerade dabei, etwas zu finden, das mir ein ER-diagramm ausspuckt. oder gibt es sowas schon fuer Drupal?
ag
Node-Revisions
am 04.09.2006 - 22:56 Uhr
Wie ist denn da der Wert von 'node_revisions_vid'.
Meiner Erfahrung nach gibt es bei 'duplicated key entries' Fehlern nur 2 Möglichkeiten:
1. wie ich schon sagte, die betreffende Tabelle reparieren
2. den Primary Key in der Sequences Tabelle höher setzen
vg, md - drupalcenter
--
www.mdwp.de
geloest
am 07.09.2006 - 07:23 Uhr
nach einer schoepferischen pause hat es jetzt folgendermassen gepasst:
neues RDBMS (in meinem fall), neue Drupal-DB, tbl_nodes importieren, tbl_node_revisions importieren, counter auf ehemalige max-werte setzen in tbl_sequences fuer node_nid/node_revisions_vid bzw. neu anlegen, in tbl_users user importieren mit uid 1 (nicht zwangslaeufig); dann testen, ob neuer content angelegt werden kann;
ag