node id Auswahl manipulieren
Eingetragen von nilsja (17)
am 11.08.2008 - 13:23 Uhr in
am 11.08.2008 - 13:23 Uhr in
Hi,
ich habe Inhalte von phpNuke zu Drupal 6 migriert. Die Artikel beginnen mit nid's ab 400. Ich hätte gerne das Drupal bei Erstellung von neuen Nodes unten Anfängt, also die node ids zwischen 0 und 400 noch verwendet. Bei 6.1 war das auch noch so. Wichtig ist das für mich, weil noch Artikel mit vortlaufenden nids nachmigriert werden müssen. Diese dürfen dann nicht von Drupal mit anderen Artikeln belegt sein.
Gibt es da eine Möglichkeit?
Gruß,
Nilsja
- Anmelden oder Registrieren um Kommentare zu schreiben
Re: node id Auswahl manipulieren
am 11.08.2008 - 16:57 Uhr
ich habe Inhalte von phpNuke zu Drupal 6 migriert.
Wie?
Die Artikel beginnen mit nid's ab 400.
Warum?
Ich hätte gerne das Drupal bei Erstellung von neuen Nodes unten Anfängt, also die node ids zwischen 0 und 400 noch verwendet.
ALTER TABLE {node} AUTO_INCREMENT = 1;
Wichtig ist das für mich, weil noch Artikel mit vortlaufenden nids nachmigriert werden müssen.
Warum hast du sie nicht gleich mitmigriert?
--
Hallo traxer, danke für
am 11.08.2008 - 17:15 Uhr
Hallo traxer,
danke für deine schnelle Antwort. Alles hat seine Grümnde :)
Wie? Mit einem selbstgeschriebenen PHP Script. Möchtest du genauer wissen welche Tabellen ich aus phpnuke ausgelesen habe etc. ?
Waum ab 400? Weil phpnuke absoluter Schrott ist :) Ehrlich gesagt keine Ahnung. Wird irgendwie historisch gewachsen sein. Oder weil Artikel aus den ersten Jahren inzwischen gelöscht wurden, oder oder...
Ah halt stop, du fragst dich warum ich die alten ids übernommen habe? Damit ich viel einfacher (mit custom_error modul) ein Weiterleitungsskript erstellen kann, welches interne Deeplinks zwischen den Artikeln übersetzt.
Warum nicht gleich mitmigriert? Weil sie erst noch erstellt werden. So ein Migrationsprozess kann schonmal ein paar Monate dauern. Vor allem wenn so banale Probleme wie diese hier ausbremsen.
Und jetzt ich:
ALTER TABLE {node} AUTO_INCREMENT = 1;
Wo? Wie? Warum?
Direkt als query in der db ausführen? Und das reicht dann? Keine anderen Einträge mehr?
Re: Hallo traxer, danke für
am 12.08.2008 - 11:11 Uhr
... Weiterleitungsskript ..., welches interne Deeplinks zwischen den Artikeln übersetzt.
Du köntest die Anpassung von Deeplinks mit in die Migration aufnehmen. Je nach Eingabeformat (das du bei phpNuke verwendet hast) hilft dabei ein BBCode-Parser oder ein HTML-Parser. Die Übersetzung von alte in neue IDs kanst du ein einer zweispaltigen Tabelle speichern.
Warum nicht gleich mitmigriert? Weil sie erst noch erstellt werden.
Es ist gut, sich frühzeitig über Migration Gedanken zu machen. Trotzdem sollte die eigentliche Migration erst spät und in einem Rutsch erfolgen.
ALTER TABLE {node} AUTO_INCREMENT = 1;
Wo? Wie? Warum?
An die Datebank senden. Vorher natürlich den Namen der node-Tabelle anpassen. Neue Nodes werden dann beginnend mit 1 erzeugt. Du hast 400 Nodes Zeit, deine Migration zu vervollständigen. Danach musst du den AUTO_INCREMENT-Wert wieder hochsetzen.
--
den Namen der node Tabelle
am 12.08.2008 - 12:38 Uhr
den Namen der node Tabelle anpassen? Also aus {node} node machen? Muss der auto_invrement Wert auch für node_revisions geändert werden, oder gilt die nodes Tabelle als Maßstatb was die ids angeht?
Re: den Namen der node Tabelle
am 12.08.2008 - 13:07 Uhr
Also aus {node} node machen?
Meistens! Drupal kennt aber ein Feature namens "Table Prefix". Dabei werden Namen von Tabellen mit einem festen Präfix versehen (muss bei Installation angegeben werden). Dadurch ist es leichter, in der selben Datenbank Tabellen von mehreren Anwendungen unterzubringen. Klingt erst ein mal blödsinnig; allerdings gehört es zur Produktpolitik vieler Hosting Provider, ihren Kunden nur eine begrenzte Anzahl von Datenbanken anzubieten.
Muss der auto_invrement Wert auch für node_revisions geändert werden, ...
Nein.
--
habe jetzt in heidisql den
am 12.08.2008 - 13:15 Uhr
habe jetzt in heidisql den befehl
ALTER TABLE node AUTO_INCREMENT = 1;
ausgeführt und eine page erstellt. hat leider nicht funktioniert. die nid ist über 2000 :(
Re: habe jetzt in heidisql den
am 12.08.2008 - 13:23 Uhr
Bist du sicher das du Drupal 6 hast?
--
ja, absolut sicher.
am 12.08.2008 - 13:38 Uhr
ja, absolut sicher.
kein Idee mehr?
am 22.08.2008 - 12:52 Uhr
kein Idee mehr?
noch ein versuch
am 25.11.2008 - 17:12 Uhr
kann es sein, dass ich
ALTER TABLE node AUTO_INCREMENT = 1;
einfach nur an der falschen stelle eingegeben habe? bin langsam echt am verzweifeln. das muss doch irgendwie gehen.
habe jetzt auch noch
ALTER TABLE node_revisions AUTO_INCREMENT = 1;
ausgeführt. Leider auch ohne Erfolg.Gruß,
Nils
es wäre auch nicht schlimm
am 25.11.2008 - 17:25 Uhr
es wäre auch nicht schlimm wenn es nur über einen hack im drupal-php source ginge, da diese änderungen nach der migration ruhig wieder durch ein update überschrieben werden können und die nids dann wieder von oben genutzt werden können.
Am Drupal-Kern
am 26.11.2008 - 18:21 Uhr
Am Drupal-Kern herumzuschrauben ist wohl die einzige Möglichkeit. Laut MySQL-Handbuch kann man Auto_Increment nämlich nicht niedriger setzen als einen bereits vergebenen Wert.
--