Für Menschen · Seien Sie begeistert und Sie werden begeistern !
Es kommt leider vor, dass man umziehen muss oder möchte - aus welchen Gründen auch immer.
Um dies ohne großen Ärger zu bewerkstelligen wird im folgenden eine kleine Anleitung Schritt für Schritt hinterlegt. Außerdem gehe ich auf bekannte Probleme ein und stelle einige Lösungen bereit.
Achtung: Bitte erst lesen und dann loslegen, keine Garantie auf zerstörte Daten! Sicherung anlegen!
config.php von WP steht. Im Normalfall ist dies wp_ (Bsp.: wp_post2cat oder wordpress_post2cat). Solltet ihr diesen verändert haben bzw. sollte sich der Präfix eures alten Blogs vom neuen unterscheiden, so müssen in der SQL-Datei die Daten verändert ist. Dazu eignet sich jeder bessere Editor - zum Beispiel Notepad++, mit dem wir nun nach dem alten Präfix suchen und mit dem neuen ersetzen. Damit sollte selbst eine große SQL-Datei schnell verändert sein.`ALTER_PRÄFIX_Beispiel für Tabelle post2cat:
--
-- Tabellenstruktur für Tabelle `wp_post2cat`
--
DROP TABLE IF EXISTS `wp_post2cat`;
CREATE TABLE `wp_post2cat` (
`rel_id` bigint(20) NOT NULL auto_increment,
`post_id` bigint(20) NOT NULL default '0',
`category_id` bigint(20) NOT NULL default '0',
PRIMARY KEY (`rel_id`),
KEY `post_id` (`post_id`,`category_id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_general_ci AUTO_INCREMENT=13 ;
--
-- Daten für Tabelle `wp_post2cat`
--
INSERT INTO `wp_post2cat` (`rel_id`, `post_id`, `category_id`) VALUES (1, 1, 1);
INSERT INTO `wp_post2cat` (`rel_id`, `post_id`, `category_id`) VALUES (5, 6, 1);
INSERT INTO `wp_post2cat` (`rel_id`, `post_id`, `category_id`) VALUES (3, 4, 1);
...
INSERT INTO `wp_post2cat` (`rel_id`, `post_id`, `category_id`) VALUES (11, 12, 1);
-- --------------------------------------------------------
Nun heißt es also die Tabellen in eigene Dateien zu legen, wie im obigen Beispiel zu sehen ist, endet jeder Datensatz immer mit
-- --------------------------------------------------------
Danach folgt die nächste Tabelle und die zugehörigen Daten.
Wichtig: legt vorher eine Sicherung der Originaldatei an!
Unter anderem kann es zu Problemen mit Sonderzeichen kommen, heist wir sehen in der Ausgabe kein Ü sondern kryptische Zeichen. Die können wir mit einem kleinen Script beheben. Sollen alle Tabellen in der Datenbank durchforstet werden und alle Sonderzeichen sollen UTF-8 codiert sein, so ist das Script content encoding zu empfehlen.
Die Mime-Deklarierung eures Blogs findet ihr bei WP unter Einstellungen --> Lesen - UTF-8 ist Standard und auch zu empfehlen.
Will man nur einzelne Tabellen durchforsten und gegebenfalls die Zeichen ändern, so kann der folgende Code genutzt werden - Kopieren, in einer php-Datei speichern und in den Ordner wp-content des Blogs kopieren, oder downloaden.
Die Datei dann über den Browser aufrufen. Die Datei für jede Tabelle anpassen.
<?php
/**************************************************
Convert WP Content encoding
BASISSCRIPT: Markus Tacker <m@tacker.org>
Modified: Frank Bueltge <bueltge.de>
***************************************************/
// New coding
$new_encoding = 'UTF-8';
// WordPress config
require_once '../wp-config.php';
// Connect DB
$DBC = mysql_connect(DB_HOST, DB_USER, DB_PASSWORD);
mysql_select_db(DB_NAME, $DBC);
$table = $wpdb->prefix.'comments';
echo '<pre>';
$result_data = mysql_query('SELECT * FROM ' . $table);
echo $table . ' ';
while ($data = mysql_fetch_assoc($result_data)) {
$sql = 'UPDATE ' . $table;
// Build set
$set = array();
foreach ($data as $key => $val) {
$set[] = ek($key) . '=' . ev(mb_convert_encoding($data[$key], $new_encoding));
}
$sql .= ' SET ' . join(', ', $set);
// Build where
$where = array();
foreach ($data as $key => $val) {
if (!preg_match('/[0-9]+/', $val)) continue; // Use only numbers in where
$where[] = ek($key) . '=' . ev($data[$key]);
}
$sql .= ' WHERE ' . join(' AND ', $where);
$query_result = mysql_query($sql, $DBC);
if (!$query_result) {
die('Invalid query: ' . mysql_error());
}
echo '.';
flush();
}
echo "\n";
echo 'All done.>/pre>';
// Disconnect DB
mysql_close($DBC);
function ek($string)
{
global $DBC;
return "`" . mysql_real_escape_string($string, $DBC) . "`";
}
function ev($string)
{
global $DBC;
return "'" . mysql_real_escape_string($string, $DBC) . "'";
}
?>
Ich bin urlaubsreif, ersticke in Arbeit und damit auch für die Leser des Weblogs nicht zu erreichen. Bitte geduldet euch ein wenig mit Supportanfragen.
Leider muss ich die Kommentarfunktion deaktivieren, ansonsten würde ich weiter in Arbeit ersticken oder die Anfragen nicht nach bestem Gewissen beantworten.
Vielen Dank für das Verständnis!
bueltge.de [by:ltge.de] wird von Frank Bültge geführt, administriert und gestaltet. Alle Inhalte sind persönlich von mir ausgewählt und erstellt, nach bestem Gewissen und Können, was die Möglichkeit von Fehlern nicht ausschließt.
Das Weblog wird angetrieben von WordPress und aktuell gibt es 854 Beiträge, 15036 Kommentare in 14 Kategorien und 450 Tags.
Das Blog wird liebevoll mit xHTML & CSS in Handarbeit gestaltet.
Design und Code ist unter Copyright
© 2001 - 2010 bueltge.de [by:ltge.de]
16. Dezember 2006 um 16:07
16. Dezember 2006 um 21:38
"[...] aber in der Regel kann man nie mehr als 1MByte an Daten importieren [...]"
Dazu ist anzumerken, dass die Daten erst hochgeladen werden müssen bevor sie von phpMyAdmin verarbeitet werden können. Somit stellt jeder Import für den Server erst einmal einen Upload dar.
Die Dateigröße für einen Upload wird i.d.R. in der php.ini geregelt. Es liegt also in der Hand des Server-Admins wie groß Dateien für den Upload sein dürfen. Bei sehr konservativ eingestellten Servern sind das auch schon mal weit weniger als 1MB. Bei anderen Servern auch schon mal mehr als 2MB.
Ich benutze aus verschiedenen Gründen einen Desktop-Client für MySQL-Operationen. Dazu verwende ich MySQL Control Center (gibt es z.B. hier:
http://www.soft-ware.net/office/daten/oberflaeche/p03277.asp).Zum einen habe ich beim Client nicht die Upload-Beschränkungen. Zum anderen lassen sich damit auch noch einige andere "Pflegearbeiten" an den DBS recht komfortabel vornehmen. Man kann SQL-Befehle in Textdateien abspeichern und sie im Client mit 2,3 Mausklicks ausführen.
Ein weiterer Vorteil eines Desktop-Clients liegt in der maximalen Ausführungszeit für PHP-Scripte. Ist diese auf dem Server zu kurz bemessen, kann phpMyAdmin Probleme bei recht umfangreichen (langwierigen) DB-Aktionen bekommen.
Jeder der sich etwas intensiver mit seinen MySQL-DBs beschäftigt, sollte auch mal eionen Blick auf einen Desktop-Client werfen. Neben MySQL Control Center gibt es davon noch ein paar andere.
17. Dezember 2006 um 12:42
Hi
danke für die Erklärung, die sehr einfache, ich nehm die in meine Liste zu den WP Tipps auf.
Für große Datenbanken nehm ich immer dieses Script:
http://www.ozerov.de/bigdump.phpdamit habe ich Foren mit >500 000 Einträgen und >5000User leichtest übersiedelt.
offtopic:
gemein, vergaß die Spamfrage, nutz den Return button der ganze Kommentar weg *snief* und
entweder hat mein Flock was, aber Deine Seiten *derladen* bei mir kaum
Dir einen schönen Sonntag
Monika, die jetzt die Spamschutzfrage vorher ausgefüllt hat
17. Dezember 2006 um 15:24
24. Dezember 2006 um 22:03
"Fatal error: Call to undefined function: mb_convert_encoding() in ...\wp-content\iconv.php on line 32"
Beim Aufruf des Konvertierungs-Scriptes
26. Dezember 2006 um 21:40
Hallo Ralf,
da das Script ein Schnellschuss ist, wird nicht abgefragt, wenn alles OK ist.
Die Funktion gibt es nicht, die war nur bei einem erweiterten Script da.
LG Frank
29. Januar 2007 um 18:39
12. Februar 2007 um 16:18
11. April 2007 um 16:28
Danke für die Hilfe. Nur habe ich das Problem, dass alle Bilder und Artikel noch auf den alten Server verlinken sind, woran kann das liegen?
11. April 2007 um 17:20
Dann wirst du nochmal mit Suchen/Ersetzen in der Datenbank die Links ändern müssen. Prüfe im Vorfeld doch mal einen Link im Editor und unbedingt eine Sicherung der DB aufsetzen.
4. Mai 2007 um 22:06
29. Mai 2007 um 16:54
18. August 2007 um 01:04
12. September 2007 um 01:43
5. Oktober 2007 um 00:13
Hallo Frank,
ich bin auch gerade am umziehen und habe eine Frage:
Früher gab es doch in den Wordpress-Optionen mal die Möglichkeit, den "echten" Serverpfad zum Blog irgendwo in den Optionen einzustellen. Ich finde das mittlerweile in der neuen Version nirgendwo wieder - weder in den Optionen, noch in der config-Datei.
Nun suchen nur leider ein, zwei Plugins und die Upload-Optionen an der alten Stelle: /homepages/45/d1234583xx/htdocs/blog/wp-content/ .
Hast du eine Ahnung, wo - in welcher Datei - sich die Einstellung versteckt?
Das Problem mit den Umlauten hatte ich auch, habe es mit einem zweiten Import mittels WP-DBManager gelöst (
http://lesterchan.net/portfolio/programming.php).5. Oktober 2007 um 19:23
Wenn ich mich recht erinnere war das früher bei Verschiedenes. Ist aber nicht mehr drin.
5. Oktober 2007 um 21:08
Seltsam, oder? (wie einem die Optionen genommen werden)
10. Oktober 2007 um 07:18
13. Januar 2008 um 11:24
13. Januar 2008 um 17:56
Datenbank backups oder umzüge am einfachsten automatisieren
automatische-mysql-db-backups-mit-mysqldumper-und-cron
13. Januar 2008 um 22:32
7. Mai 2008 um 14:37
danke für die wertvolle tipps
12. August 2008 um 16:35
12. August 2008 um 20:24
~8 Monate früher mit diesem Eintrag und ich hätte mir einiges an Arbeit erspart
13. August 2008 um 14:44
14. August 2008 um 11:30
3. September 2008 um 00:22
Kann es sein, dass der CODE oben ein bisschen durcheinandergeraten ist?
8. Oktober 2008 um 16:10
6. November 2008 um 13:30
Tolle Zusammenfassung!
Inige Probleme hatte ich auch und konnte sie Lösen.
12. November 2008 um 10:32
Danke für die Tipps, war gestern am verzweifeln, da ich mit meinem Blog umziehen muss.
12. Januar 2009 um 16:17
Ich möchte von einem bestehenden 2.7 Blogdie Datenbank in ein neu installiertes 2.7 Blog transferieren. Mit der blogeigenen import/export Funktion geht das gut, aber erstens sind dann alle Überschriften von den Artikeln weg und alle Artikel waren durcheinander. Dies lies sich auch händisch über phpmyadmin nicht beheben.
Dann mit mysqlDumper versucht. Das ging garnicht. Ergebnis war eine weisse Seite.
Jetzt mit dem Wordpress Database backup Plugin versucht. Tolle Sache, aber auch da war die weisse Seite dann da, die Tabellen allerdings waren in der Datenbank.
Auch nach hiesiger Anleitung bin ich schon vorgegangen. Ergebnis, die weisse Seite. Hab nun sogar händisch in der wp_options die Einträge _name siteurl und home angepasst, aber daran liegts auch nicht anscheinend. Datenbankpräfixe stimmen auch.
Ich weiss, das es geht, aber ich weiss nicht, was ich falsch mache.
Wäre überaus dankbar und erfreut, wenn mir jemand helfen könnte und würde.
Mit bestem Gruß,
der Rio
28. Januar 2009 um 15:46
Vielen Dank für die klare Beschreibung. Stehe mit meinem Blog nämlich auch grade vor einem Umzug - und das bereitet mir doch erhebliche Bauchschmerzen. Die sind jetzt zwar noch nicht ganz weg, aber ich werd wohl ruhiger schlafen können. Betsen Dank und mach weiter... wenn´s geht auch mit solchen Tipps.
4. September 2009 um 19:33
4. September 2009 um 19:50
2. Februar 2010 um 15:49
Cool erklärt habs direkt verstanden..
In den beiträgen wird ja hier ziehmlich disskutiert..^^
besten grüße Tobi