Bei mir hat auch nichts alles auf anhieb funktioniert und ich bin in ein paar Fehler gelaufen. Darum hier ein paar Troubleshoots. Ich bin selbst immer ein Freund davon auch diese – soweit möglich – mitzuteilen.
Offset zu klein gewählt
Ich hatte Ursprünglich mit einem Offset von 20.000 begonnen und mich dann doch – aus den genanntnen Gründen – für einen größeren Offset entschieden. 50.000. Da ich aber bereits die ersten Statements ausgeführt hatte, waren alle ID’s um 20.000 angereichert. Ein Offset ist allerdings additiv. Ihr könnt somit alle Statements nochmals ausführen und benutzt anstatt „+20000“ einfach „+30000“. So bin ich wieder auf meine +50000 gekommen.
Wichtig ist aber, das passiert alles VOR dem Import. Habt Ihr bereits Importiert, ist es möglich aber da würde ich ggf. dann doch zum Backup greifen. Ansonsten gilt, IDs sind einfach Zahlen. Beispiel:
Original: ID = 123
Nach erstem Offset: 123 + 20000 = 20123
Nach zweitem Offset: 20123 + 30000 = 50123
Post und Attachments Offseterhöhung:
UPDATE src_posts SET ID = ID + 30000; UPDATE src_posts SET post_parent = post_parent + 30000 WHERE post_parent > 0;
Postmeta:
UPDATE src_postmeta SET post_id = post_id + 30000;
Da die Gallery-IDs und _thumbnail_id schon einmal angepasst wurden (+20000), musst du sie nach dem Import ins Zielnoch einmal um +30000 erhöhen!
UPDATE wp_postmeta SET meta_value = CAST(meta_value AS UNSIGNED) + 30000 WHERE meta_key = '_thumbnail_id' AND meta_value REGEXP '^[0-9]+$';
Autoinkrement danahc auch noch anpassen, da Du den offset angepasst hast
SELECT MAX(ID) FROM wp_posts; ALTER TABLE wp_posts AUTO_INCREMENT = ;
Doppelter Eintrag „9“ bei INSERT INTO wp_postmeta
Das liegt an der meta_id in der entsprechenden postmeta-Tabelle. Meta-IDs sind intern, WordPress braucht keine „historisch korrekten“ meta_ids. Die sauberste Lösung ist beim Insert die Spalten explizit angeben und meta_id weglassen. (my)SQL vergibt neue meta_ids somit per AUTO_INCREMENT.
INSERT INTO wp_postmeta (post_id, meta_key, meta_value) SELECT post_id, meta_key, meta_value FROM source_postmeta;
und auch in den commentmeta wird dir dieses Problem begegnen
INSERT INTO wp_commentmeta (comment_id, meta_key, meta_value) SELECT comment_id, meta_key, meta_value FROM source_commentmeta;
Damit sind alle meta_id-Kollisionen weg und die post_id-Zuordnung bleibt korrekt.
Alte Feature Bilder plötzlich weg, nur noch die aus dem Merge sichtbar
Wenn das der Fall ist, habt ihr den Offset-Filter nicht gesetzt bei der attachment-bearbeitung.
Falsch:
UPDATE wp_postmeta SET meta_value = CAST(meta_value AS UNSIGNED) + 50000 WHERE meta_key = '_thumbnail_id' AND meta_value REGEXP '^[0-9]+$';
Richtig:
UPDATE wp_postmeta pm JOIN wp_posts p ON p.ID = pm.post_id SET pm.meta_value = CAST(pm.meta_value AS UNSIGNED) - 50000 WHERE pm.meta_key = '_thumbnail_id' AND p.ID < 50000 AND pm.meta_value REGEXP '^[0-9]+$' AND CAST(pm.meta_value AS UNSIGNED) >= 50000;
Kategorien / Schlagwörter werden in den merge-Artikel nicht angezeigt
Bei den gemergten Beiträgen werden keine Kategorien und keine Tags angezeigt?
In der SQL sind sie vorhanden und auch in der WordPress Oberfläche siehst Du sie nicht mehr? Die Anzeige in WordPress sagt es sind „43“ kategorien da und du Siehst in der Tabelle aber nur „5“?
Offset nochmal durchführen
UPDATE wp_term_taxonomy
SET parent = parent + 50000
WHERE taxonomy = 'category'
AND parent > 0
AND term_id >= 50000
AND parent < 50000;
2. Merge/Offsett nochmal durchführen
Führe nochmals die ganzen INSERTS aus, evtl. hast du einen vergessen. Bei mir waren es tatsächlich die „terms“. Vergesse danach die Beziehungen nochmals herzustellen. Über mein Tool beispielsweise.
3. Taxopress
Taxopress geht rein auf die SQL, die Beziehungen sind egal. Ich hab darüber ALLE Kategorien geöffnet und die Beziehungen auch nochmals gesetzt. Danach waren alle Kategorien in der WordPress-Standardansicht auch wieder da.
Galerien der schon vorhandenen Beiträgen passen plötzlich nicht mehr
Das ist derselbe Fehler wie bei den Featured Images, nur eben in post_content: Du hast den Gallery-Fix auf alle Posts laufen lassen, obwohl er nur für die importierten Posts (ID ≥ 50000) gedacht war.
Mein WP-Plugin hat dafür ienen Fix.
Danach kontrollieren, hier muss 0 rauskommen
SELECT ID FROM wp_posts WHERE ID < 50000 AND ( post_content REGEXP '\
]ids="[^"](5[0-9]{4,}|6[0-9]{4,}|7[0-9]{4,})' OR post_content REGEXP '"ids"\s:\s\[[^\]]*(5[0-9]{4,}|6[0-9]{4,}|7[0-9]{4,})' ) LIMIT 50;
Meine Name ist Florian. Sternzeit -338000.22768670303. Der Nerd der "Familie Schickischmi". Beruflich bin ich technikbegeisterter Papiervernichter. Privat natürlich ebenso der Tekkie im Familienuniversum, der aber trotzdem viel Zeit Draussen und beim Knipsen verbringt. Mir kanns nicht kalt und vom Reiseziel nördlich genug sein. Würde ich wählen, würde ich lieber die schorfen Klippen vom Ende der Welt wählen, als irgendeinen Südsee-Strand. Ich nehm also lieber die -20°C als alles über 25°C
Schreibe den ersten Kommentar