Okay, ich konnte das nicht so stehen lassen.
Während ich annehme, dass es möglich ist, dass der Fehler, den ich erhalten habe, vom Import-Skript behandelt werden könnte, scheint es mir wirklich ein Problem mit der Datenbankstruktur von phpBB3 zu sein, und zwar mit der Tatsache, dass meine Datenbank-Kollation UTF8 ist. Ich habe diesen Fehler beim Ausführen des Import-Skripts erhalten:
ERROR 1071 (42000) at line 1233035: Specified key was too long; max key length is 1000 bytes
Als ich Zeile 1233035 meiner phpbb_mysql.sql-Datei betrachtete – ich verwende eine lokale Kopie des Daten-Dumps –, sah ich dies:
ALTER TABLE `phpbb_config`
ADD PRIMARY KEY (`config_name`),
ADD KEY `is_dynamic` (`is_dynamic`);
Als ich die Spalte config_name in der Tabelle phpbb_config betrachtete, stellte ich fest, dass sie auf VARCHAR(255) gesetzt ist.
Dank dieses Beitrags auf Stackoverflow entdeckte ich, dass ich einen “Präfix-Index” verwenden kann, um die Länge des Schlüssels zu verkürzen. Ich habe es getestet und es funktioniert.
Für meine phpBB 3.3.8-Datenbank waren tatsächlich vier Tabellen betroffen:
phpbb_config
phpbb_config_text
phpbb_migrations
phpbb_oauth_accounts
Wenn jemand anderes es versuchen möchte, hier sind die Schritte für die Tabelle phpbb_config, und ich werde die Abfragen für die anderen Tabellen am Ende einfügen.
Berechnen Sie den kürzesten Wert für den Präfix-Index mit dieser Abfrage:
SELECT
ROUND(SUM(LENGTH(`config_name`)<10)*100/COUNT(`config_name`),2) AS pct_length_10,
ROUND(SUM(LENGTH(`config_name`)<20)*100/COUNT(`config_name`),2) AS pct_length_20,
ROUND(SUM(LENGTH(`config_name`)<50)*100/COUNT(`config_name`),2) AS pct_length_50,
ROUND(SUM(LENGTH(`config_name`)<100)*100/COUNT(`config_name`),2) AS pct_length_100
FROM `phpbb_config`;
In meinem Fall zeigte sich, dass 100 % der Zeilen weniger als 50 Zeichen verwendeten. Also bearbeitete ich meine Dump-Datei:
nano /var/discourse/shared/standalone/import/data/phpbb_mysql.sql
und verwendete die Suche Strg+W für die folgende Zeichenkette:
ALTER TABLE `phpbb_config`
dann änderte ich dies:
ALTER TABLE `phpbb_config`
ADD PRIMARY KEY (`config_name`),
ADD KEY `is_dynamic` (`is_dynamic`);
zu diesem:
ALTER TABLE `phpbb_config`
ADD PRIMARY KEY (`config_name`(50)),
ADD KEY `is_dynamic` (`is_dynamic`);
Das (50) darin ist die Länge des Präfix-Index.
In meinem Fall musste ich den Vorgang mit den anderen drei Tabellen wiederholen, indem ich diese Abfragen verwendete, um die optimale Präfix-Schlüssellänge zu erhalten:
SELECT
ROUND(SUM(LENGTH(`config_name`)<10)*100/COUNT(`config_name`),2) AS pct_length_10,
ROUND(SUM(LENGTH(`config_name`)<20)*100/COUNT(`config_name`),2) AS pct_length_20,
ROUND(SUM(LENGTH(`config_name`)<50)*100/COUNT(`config_name`),2) AS pct_length_50,
ROUND(SUM(LENGTH(`config_name`)<100)*100/COUNT(`config_name`),2) AS pct_length_100
FROM `phpbb_config_text`;
SELECT
ROUND(SUM(LENGTH(`migration_name`)<10)*100/COUNT(`migration_name`),2) AS pct_length_10,
ROUND(SUM(LENGTH(`migration_name`)<20)*100/COUNT(`migration_name`),2) AS pct_length_20,
ROUND(SUM(LENGTH(`migration_name`)<50)*100/COUNT(`migration_name`),2) AS pct_length_50,
ROUND(SUM(LENGTH(`migration_name`)<100)*100/COUNT(`migration_name`),2) AS pct_length_100
FROM `phpbb_migrations`;
SELECT
ROUND(SUM(LENGTH(`provider`)<10)*100/COUNT(`provider`),2) AS pct_length_10,
ROUND(SUM(LENGTH(`provider`)<20)*100/COUNT(`provider`),2) AS pct_length_20,
ROUND(SUM(LENGTH(`provider`)<50)*100/COUNT(`provider`),2) AS pct_length_50,
ROUND(SUM(LENGTH(`provider`)<100)*100/COUNT(`provider`),2) AS pct_length_100
FROM `phpbb_oauth_accounts`;
Hier sind die Suchstrings für die anderen Tabellen, um Ihnen Zeit zu sparen:
ALTER TABLE `phpbb_config_text`
ALTER TABLE `phpbb_migrations`
ALTER TABLE `phpbb_oauth_accounts`
Ich sage nicht, dass ich aus dem Gröbsten raus bin, aber das oben hat meinen anfänglichen Datenbankfehler behoben, und der Import läuft:
#import_phpbb3.sh
Der phpBB3-Import beginnt...
Lade vorhandene Gruppen...
Lade vorhandene Benutzer...
Lade vorhandene Kategorien...
Lade vorhandene Beiträge...
Lade vorhandene Themen...
Importiere von phpBB 3.3.8
Erstelle Benutzer
722 / 5014 ( 14.4%) [58 Elemente/min]
Update:
Das Import-Skript wurde in 9 Stunden und 28 Minuten abgeschlossen. Gott sei Dank für Screen. Dieses Skript ist großartig!
Die Nachbearbeitung läuft jetzt.
Gibt es irgendwo ein Protokoll der Ausgabe des Import-Skripts, oder hätte ich es in eine Datei umleiten sollen?