Mediawiki kann nach Debian-Upgrade nicht auf die Datenbank zugreifen

Mediawiki kann nach Debian-Upgrade nicht auf die Datenbank zugreifen

Ich habe einen Debian 9 „Stretch“-Server auf Debian 10 „Buster“ aktualisiert, wodurch auch Mediawiki auf Version 1.31 aktualisiert wird.

Der Versuch, update.php auszuführen, schlägt mit der Meldung „Kein Zugriff auf die Datenbank möglich: Keine Datenbankverbindung“ fehl:

/var/lib/mediawiki/maintenance# php update.php
MediaWiki 1.31.10 Updater

Your composer.lock file is up to date with current dependencies!
[6b70dd5bdc9deadcca99506a] [no req]   Wikimedia\Rdbms\DBConnectionError from line 1004 of /usr/share/mediawiki/includes/libs/rdbms/database/Database.php: Cannot access the database: No database connection
Backtrace:
#0 /usr/share/mediawiki/includes/libs/rdbms/loadbalancer/LoadBalancer.php(1140): Wikimedia\Rdbms\Database->reportConnectionError(string)
#1 /usr/share/mediawiki/includes/libs/rdbms/loadbalancer/LoadBalancer.php(750): Wikimedia\Rdbms\LoadBalancer->reportConnectionError()
#2 /usr/share/mediawiki/includes/GlobalFunctions.php(2813): Wikimedia\Rdbms\LoadBalancer->getConnection(integer, array, boolean)
#3 /usr/share/mediawiki/maintenance/Maintenance.php(1311): wfGetDB(integer, array, boolean)
#4 /usr/share/mediawiki/maintenance/update.php(147): Maintenance->getDB(integer)
#5 /usr/share/mediawiki/maintenance/doMaintenance.php(94): UpdateMediaWiki->execute()
#6 /usr/share/mediawiki/maintenance/update.php(248): require_once(string)
#7 {main}

Die Datenbank ist Postgresql und ich kann mit psqlusw. problemlos darauf zugreifen.

Ich LocalSettings.phphabe

## Database settings
$wgDBtype           = "postgres";
$wgDBserver         = "localhost";
$wgDBname           = "wikidb";
$wgDBuser           = "...";
$wgDBpassword       = "...";

# Postgres specific settings
$wgDBport           = "5432";
$wgDBmwschema       = "mediawiki";
$wgDBts2schema      = "public";

Im Mediawiki-Debugprotokoll sehe ich außerdem

IP: 127.0.0.1
Start command line script update.php
[caches] cluster: EmptyBagOStuff, WAN: mediawiki-main-default, stash: db-replicated, message: SqlBagOStuff, session: SqlBagOStuff
[caches] LocalisationCache: using store LCStoreNull
[DBConnection] Wikimedia\Rdbms\LoadBalancer::openConnection: calling initLB() before first connection.
[DBReplication] Wikimedia\Rdbms\LBFactory::getChronologyProtector: using request info {
    "IPAddress": "127.0.0.1",
    "UserAgent": false,
    "ChronologyProtection": false,
    "ChronologyPositionIndex": 0
}
[DBConnection] Wikimedia\Rdbms\LoadBalancer::openConnection: failed to connect to database 0 at 'localhost'.
[DBConnection] Wikimedia\Rdbms\LoadBalancer::reportConnectionError: connection error: Unknown error ([Null])
[exception] [6b70dd5bdc9deadcca99506a] [no req]   Wikimedia\Rdbms\DBConnectionError from line 1004 of /usr/share/mediawiki/includes/libs/rdbms/d
atabase/Database.php: Cannot access the database: No database connection

Ich stecke jetzt völlig fest ...

Antwort1

Versuchen Sie, Folgendes auszukommentieren:

$wgDBmwschema       = "mediawiki";
$wgDBts2schema      = "public";

Der Standardwert der ersten Einstellung hat sich geändert, der zweite ist veraltet.

Antwort2

Bei neueren Mediawiki-Versionen gibt es einige Fallstricke, die die MySQL-Verbindung unterbrechen. Einige Lösungsversuche sind:

  1. Geben Sie die Portnummer auf dem Datenbankhost ein:
$wgDBserver = "localhost:3306";
  1. In einigen alten LocalSettings.php-Dateien sind neben der Mysql-Konfiguration auch aktive Konfigurationen für PostgreSQL vorhanden. Löschen oder kommentieren Sie diese.
# Postgres specific settings
# $wgDBport           = "5432";
# $wgDBmwschema       = "mediawiki";
# $wgDBts2schema      = "public";
  1. Als bewährte Vorgehensweise sollten Sie sicherstellen, dass SienichtVerbindung als Root bei MySQL herstellen. Einen normalen Benutzer nur für die WikiDB-Datenbank erstellen:
$mysql -u root -p
> create user wiki identified by 'xxxx';
> grant all privileges on wikidb.* to 'wiki'@'localhost';

Antwort3

Das Problem bestand darin, dass das System PHP aktualisierte, das PHP-Modul „pgsql“ für Postgres jedoch nicht neu installierte oder erneut aktivierte.

Das gleiche Problem trat beim Upgrade von Debian 10 auf Debian 11 erneut auf und wurde gelöst durch

apt install php7.4-pgsql

Ich vermute, dass dies erneut passieren wird, wenn ich auf Debian 12 aktualisiere.

verwandte Informationen