Bookworm Mediawiki: mysqldump kann nicht eingespielt werden

Debian macht sich hervorragend als Web- und Mailserver. Schau auch in den " Tipps und Tricks"-Bereich.
Antworten
Benutzeravatar
MSfree
Beiträge: 10777
Registriert: 25.09.2007 19:59:30

Bookworm Mediawiki: mysqldump kann nicht eingespielt werden

Beitrag von MSfree » 06.03.2024 15:21:43

Ich habe hier ein mysqldump von einer uralten Mediawiki Installation (Version 1.12.0, Debian Lenny).

Den Dump kann ich zwar mit

Code: Alles auswählen

mysql -u BENUTZER -p WIKIDBNAME < mediawiki.sql
einlesen. Das anschließende PHP-Skript /usr/share/mediawiki/update.php liefert dann allerdings

Code: Alles auswählen

An error occurred:
Error 1054: Unknown column 'cl_collation' in 'where clause'
Function: DatabaseUpdater::doCollationUpdate
Query: SELECT  COUNT(*)  FROM `categorylinks`    WHERE cl_collation != 'uppercase'  LIMIT 1  
Ich bin kein DB-Fachmann, also was ist zu tun, um den Fehler zu beheben. Daß dort eine "Column" fehlt, sehe ich, aber wie bekomme ich die so rein, daß das update.php fehlerfrei läuft?

Benutzeravatar
debilian
Beiträge: 1200
Registriert: 21.05.2004 14:03:04
Wohnort: 192.168.43.7
Kontaktdaten:

Re: Bookworm Mediawiki: mysqldump kann nicht eingespielt werden

Beitrag von debilian » 06.03.2024 16:33:24

Funktioniert die alte Mediawiki DB grundsätzlich nach dem zurück Spielen
oder kommen da auch schon Fehler?

gruss
-- nichts bewegt Sie wie ein GNU --

thoerb
Beiträge: 1677
Registriert: 01.08.2012 15:34:53
Lizenz eigener Beiträge: MIT Lizenz

Re: Bookworm Mediawiki: mysqldump kann nicht eingespielt werden

Beitrag von thoerb » 06.03.2024 16:45:31

MSfree hat geschrieben: ↑ zum Beitrag ↑
06.03.2024 15:21:43
Ich habe hier ein mysqldump von einer uralten Mediawiki Installation (Version 1.12.0, Debian Lenny).
Ich habe aktuell kein Mediawiki installiert, habe hier aber noch einen älteren mysqldump gefunden. Hier der Abschnitt, wo die categorylinks-Tabelle erstellt wird. Vielleicht hilft dir das weiter.

Code: Alles auswählen

--
-- Table structure for table `categorylinks`
--

DROP TABLE IF EXISTS `categorylinks`;
/*!40101 SET @saved_cs_client     = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `categorylinks` (
  `cl_from` int(10) unsigned NOT NULL DEFAULT '0',
  `cl_to` varbinary(255) NOT NULL DEFAULT '',
  `cl_sortkey` varbinary(230) NOT NULL DEFAULT '',
  `cl_sortkey_prefix` varbinary(255) NOT NULL DEFAULT '',
  `cl_timestamp` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  `cl_collation` varbinary(32) NOT NULL DEFAULT '',
  `cl_type` enum('page','subcat','file') NOT NULL DEFAULT 'page',
  UNIQUE KEY `cl_from` (`cl_from`,`cl_to`),
  KEY `cl_sortkey` (`cl_to`,`cl_type`,`cl_sortkey`,`cl_from`),
  KEY `cl_timestamp` (`cl_to`,`cl_timestamp`),
  KEY `cl_collation` (`cl_collation`)
) ENGINE=InnoDB DEFAULT CHARSET=binary;
/*!40101 SET character_set_client = @saved_cs_client */;

Benutzeravatar
MSfree
Beiträge: 10777
Registriert: 25.09.2007 19:59:30

Re: Bookworm Mediawiki: mysqldump kann nicht eingespielt werden

Beitrag von MSfree » 06.03.2024 17:14:41

debilian hat geschrieben: ↑ zum Beitrag ↑
06.03.2024 16:33:24
Funktioniert die alte Mediawiki DB grundsätzlich nach dem zurück Spielen oder kommen da auch schon Fehler?
Auf dem alten Lenny läuft das Mediawiki, die DB muß also in Ordnung sein. Ich wollte mit dem alten System aber nicht mehr experimentieren und den Dump dort einspielen.
thoerb hat geschrieben: ↑ zum Beitrag ↑
06.03.2024 16:45:31
Ich habe aktuell kein Mediawiki installiert, habe hier aber noch einen älteren mysqldump gefunden. Hier der Abschnitt, wo die categorylinks-Tabelle erstellt wird. Vielleicht hilft dir das weiter.

Code: Alles auswählen

--
-- Table structure for table `categorylinks`
--

DROP TABLE IF EXISTS `categorylinks`;
/*!40101 SET @saved_cs_client     = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `categorylinks` (
  `cl_from` int(10) unsigned NOT NULL DEFAULT '0',
  `cl_to` varbinary(255) NOT NULL DEFAULT '',
  `cl_sortkey` varbinary(230) NOT NULL DEFAULT '',
  `cl_sortkey_prefix` varbinary(255) NOT NULL DEFAULT '',
  `cl_timestamp` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  `cl_collation` varbinary(32) NOT NULL DEFAULT '',
  `cl_type` enum('page','subcat','file') NOT NULL DEFAULT 'page',
  UNIQUE KEY `cl_from` (`cl_from`,`cl_to`),
  KEY `cl_sortkey` (`cl_to`,`cl_type`,`cl_sortkey`,`cl_from`),
  KEY `cl_timestamp` (`cl_to`,`cl_timestamp`),
  KEY `cl_collation` (`cl_collation`)
) ENGINE=InnoDB DEFAULT CHARSET=binary;
/*!40101 SET character_set_client = @saved_cs_client */;
Ah, danke.

Ich gehe davon aus, daß diese Anweisungen in die Kommandozeile von mysqladmin einzugeben sind? Wenn ja, vor oder nachdem der Dump eingespielt wurde?

Benutzeravatar
bluestar
Beiträge: 2346
Registriert: 26.10.2004 11:16:34
Wohnort: Rhein-Main-Gebiet

Re: Bookworm Mediawiki: mysqldump kann nicht eingespielt werden

Beitrag von bluestar » 06.03.2024 18:22:24

Deine Fehlermeldung lässt darauf schließen, dass deine aktuelle mediawiki Installation zu neu ist und es keinen direkten Upgrade-Support von der Uralt Version gibt.

thoerb
Beiträge: 1677
Registriert: 01.08.2012 15:34:53
Lizenz eigener Beiträge: MIT Lizenz

Re: Bookworm Mediawiki: mysqldump kann nicht eingespielt werden

Beitrag von thoerb » 06.03.2024 18:24:06

MSfree hat geschrieben: ↑ zum Beitrag ↑
06.03.2024 17:14:41
Ich gehe davon aus, daß diese Anweisungen in die Kommandozeile von mysqladmin einzugeben sind? Wenn ja, vor oder nachdem der Dump eingespielt wurde?
Die Anweisung:

Code: Alles auswählen

CREATE TABLE `categorylinks` (...
müsstest du so ähnlich in deinem Dump der Datei mediawiki.sql finden.

Evtl. kannst du deine mediawiki.sql so anpassen, dass die entsprechende Column erstellt wird. Denn die müsste ja bei dir fehlen.

Code: Alles auswählen

`cl_collation` varbinary(32) NOT NULL DEFAULT '',
Ist ein bisschen Bastelei, könnte aber funktionieren. Es kann aber auch genauso gut sein, dass noch mehr Fehler auftreten.

Dass du aber vorher eine Sicherung von der Origiandatei machst, muss ich dir nicht sagen. :wink:

(Ich hoffe, dass ich mich einigermaßen verständlich ausgedrückt habe.)

Benutzeravatar
MSfree
Beiträge: 10777
Registriert: 25.09.2007 19:59:30

Re: Bookworm Mediawiki: mysqldump kann nicht eingespielt werden

Beitrag von MSfree » 06.03.2024 18:45:09

thoerb hat geschrieben: ↑ zum Beitrag ↑
06.03.2024 18:24:06
Die Anweisung:

Code: Alles auswählen

CREATE TABLE `categorylinks` (...
müsstest du so ähnlich in deinem Dump der Datei mediawiki.sql finden.

Evtl. kannst du deine mediawiki.sql so anpassen, dass die entsprechende Column erstellt wird. Denn die müsste ja bei dir fehlen. ...
Danke.
Dann bastel ich das morgen mal in den Dump rein und versuche, die DB damit neu zu erzeugen. Heute abend habe ich keinen Zugriff auf das System mehr.
Dass du aber vorher eine Sicherung von der Origiandatei machst, muss ich dir nicht sagen. :wink:
Das neue System ist noch nicht produktiv, da steht alles auf Anfang. Wenn da etwas zerbröselt wird, ist es unproblematisch.

Das alte System fasse ich nur lesend an. Beim Dump arbeite ich sowieso schon auf einer dekomprimierten Kopie, das Original ist auf einem Backupsystem als .gz gespeichert. Ich denke, das ist erstmal genug Sicherheit.

thoerb
Beiträge: 1677
Registriert: 01.08.2012 15:34:53
Lizenz eigener Beiträge: MIT Lizenz

Re: Bookworm Mediawiki: mysqldump kann nicht eingespielt werden

Beitrag von thoerb » 06.03.2024 18:49:30

MSfree hat geschrieben: ↑ zum Beitrag ↑
06.03.2024 18:45:09
Das neue System ist noch nicht produktiv, da steht alles auf Anfang. Wenn da etwas zerbröselt wird, ist es unproblematisch.
Sehr gut, denn ich kann dir keine Garantie dafür geben, dass das funktioniert.

Benutzeravatar
heisenberg
Beiträge: 3567
Registriert: 04.06.2015 01:17:27
Lizenz eigener Beiträge: MIT Lizenz

Re: Bookworm Mediawiki: mysqldump kann nicht eingespielt werden

Beitrag von heisenberg » 07.03.2024 00:04:27

Deine Fehlermeldung lässt darauf schließen, dass deine aktuelle mediawiki Installation zu neu ist und es keinen direkten Upgrade-Support von der Uralt Version gibt.
Sehe ich auch so. Der sichere Weg wäre, mit einem Klon schrittweise über mehrere Sprünge die DB auf das aktuelle Format migriert zu bekommen. Da wird ja vielleicht nicht nur die Struktur, sondern vielleicht auch an den Daten Veränderungen vorgenommen? Formatanpassungen? Möglicherweise. Änderung der Tabellenstruktur? Durchaus möglich. (Könnte man ja Mal grob über die Tabellenstruktur von aktuellem und Uralt-MediaWiki drüber schauen.)

Die Aufgabe: Die verschiedenen jeweils unterstützen und zueinander kompatiblen PHP/MySQL/Mediawiki Versionen und das OS dazu in einer geeigneten und heraus zu findenden Reihenfolge aktualisieren.
Jede Rohheit hat ihren Ursprung in einer Schwäche.

Benutzeravatar
MSfree
Beiträge: 10777
Registriert: 25.09.2007 19:59:30

Re: Bookworm Mediawiki: mysqldump kann nicht eingespielt werden

Beitrag von MSfree » 07.03.2024 08:52:14

heisenberg hat geschrieben: ↑ zum Beitrag ↑
07.03.2024 00:04:27
Der sichere Weg wäre, mit einem Klon schrittweise über mehrere Sprünge die DB auf das aktuelle Format migriert zu bekommen.
Da wirst du wohl recht haben.

Ein editiertes Dump (siehe oben) führt jedenfalls nicht zum Erfolg sondern zu

Code: Alles auswählen

ERROR 1136 (21S01) at line 82: Column count doesn't match value count at row 1
Ich habe im Schrank noch eine SSD mit einerm installierten Jessie liegen, auf dem ein Mediawiki liegt. Von Jessie auf Bookworm ließ sich ein Mysqldump jedenfalls importieren.

Mal sehen, ob sich der Lenny Dump in die Jessie Installation importieren läßt. Wenn ja, sollte es kein Problem sein, auf Bookworm zu gelangen.

thoerb
Beiträge: 1677
Registriert: 01.08.2012 15:34:53
Lizenz eigener Beiträge: MIT Lizenz

Re: Bookworm Mediawiki: mysqldump kann nicht eingespielt werden

Beitrag von thoerb » 07.03.2024 09:08:32

Bei einer kurzen Recherche im Internet, wurde oft XML-Export erwähnt. Wäre vielleicht auch eine Möglichkeit.

Benutzeravatar
MSfree
Beiträge: 10777
Registriert: 25.09.2007 19:59:30

Re: Bookworm Mediawiki: mysqldump kann nicht eingespielt werden

Beitrag von MSfree » 11.03.2024 10:13:47

Mit der Jessie-Installation meiner alten SSD ließ sich der Dump importieren und auch das update.php lief erfolgreiche durch, so daß ich Zugriff auf den Wikiserver hatte.

Ich habe dann wieder einen mysqldump von dem Jessie-Wiki gemacht. Mit diesem neuen Dump bekomme ich beim Import in die Bookworm-Datenbank wieder die gleichen Probleme wie mit dem ursprünglichen Dump.

Ich habe mich dann mal hierdurch gekämpft:
https://www.mediawiki.org/wiki/Topic:V380yju69y3evxlc

Einige Probleme ließen sich damit zwar beheben, am Ende bleibt aber immer noch mindestens ein Fehler:

Code: Alles auswählen

Modifying tl_namespace field of table templatelinks...Wikimedia\Rdbms\DBQueryError from line 1618 of /usr/share/mediawiki/includes/libs/rdbms/database/Database.php: Error 1091: Can't DROP INDEX `PRIMARY`; check that it exists
Wie gesagt, ich bin kein Datenbankmann, kann also nicht viel mehr als Befehler abtippen und in die Befehlzeile kippen.

Antworten