Topic on Project:Support desk

Unable to query $wgDBname after 1.31 upgrade

3
75.181.32.126 (talkcontribs)

I just upgraded a functional Mediawiki site from 1.30 to 1.31. It seems like MediaWiki is now ignoring the value of $wgDBname. I can’t run update.php to finish the 1.31 upgrade, it’s saying the table no longer exists - it most definitely does, in the $wgDBname database, not the default of mediawiki. I didn’t touch anything related to MySQL, databases, users or LocalSettings.php for the 1.31 upgrade.

The output of update.php:

MediaWiki 1.31.0 Updater

Your composer.lock file is up to date with current dependencies!
Going to run database updates for scores
Depending on the size of your database this may take a while!
Turning off Content Handler DB fields for this part of upgrade.
Adding ipb_id field to table ipblocks ...[bd90b77cbedf28248d6e5c43] [no req]   Wikimedia\Rdbms\DBQueryError from line 1457 of /var/www/scores/w/includes/libs/rdbms/database/Database.php: A database query error has occurred. Did you forget to run your application's database schema updater after upgrading?
Query: ALTER TABLE `mediawiki`.`ipblocks`
 ADD ipb_auto tinyint NOT NULL default '0',
 ADD ipb_id int NOT NULL auto_increment,
 ADD PRIMARY KEY (ipb_id)

Function: Wikimedia\Rdbms\Database::sourceFile( /var/www/scores/w/maintenance/archives/patch-ipblocks.sql )
Error: 1146 Table 'mediawiki.ipblocks' doesn't exist (localhost)

Backtrace:
#0 /var/www/scores/w/includes/libs/rdbms/database/Database.php(1427): Wikimedia\Rdbms\Database->makeQueryException(string, integer, string, string)
#1 /var/www/scores/w/includes/libs/rdbms/database/Database.php(1200): Wikimedia\Rdbms\Database->reportQueryError(string, integer, string, string, boolean)
#2 /var/www/scores/w/includes/libs/rdbms/database/Database.php(4194): Wikimedia\Rdbms\Database->query(string, string)
#3 /var/www/scores/w/includes/libs/rdbms/database/Database.php(4129): Wikimedia\Rdbms\Database->sourceStream(unknown type, NULL, NULL, string, NULL)
#4 /var/www/scores/w/includes/installer/DatabaseUpdater.php(683): Wikimedia\Rdbms\Database->sourceFile(string)
#5 /var/www/scores/w/includes/installer/DatabaseUpdater.php(751): DatabaseUpdater->applyPatch(string, boolean, string)
#6 /var/www/scores/w/includes/installer/DatabaseUpdater.php(482): DatabaseUpdater->addField(string, string, string)
#7 /var/www/scores/w/includes/installer/DatabaseUpdater.php(446): DatabaseUpdater->runUpdates(array, boolean)
#8 /var/www/scores/w/maintenance/update.php(200): DatabaseUpdater->doUpdates(array)
#9 /var/www/scores/w/maintenance/doMaintenance.php(94): UpdateMediaWiki->execute()
#10 /var/www/scores/w/maintenance/update.php(245): require_once(string)
#11 {main}

Trying to load the front page:

MediaWiki internal error.

Original exception: [cdc90f2b6d6badca80c5f360] /wiki/Main_Page Wikimedia\Rdbms\DBQueryError from line 1457 of /var/www/scores/w/includes/libs/rdbms/database/Database.php: A database query error has occurred. Did you forget to run your application's database schema updater after upgrading? 
Query: SELECT page_id,page_namespace,page_title,page_restrictions,page_is_redirect,page_is_new,page_random,page_touched,page_links_updated,page_latest,page_len,page_content_model FROM `mediawiki`.`page` WHERE page_namespace = '0' AND page_title = 'Main_Page' LIMIT 1
Function: WikiPage::pageData
Error: 1146 Table 'mediawiki.page' doesn't exist (localhost)

Backtrace:
#0 /var/www/scores/w/includes/libs/rdbms/database/Database.php(1427): Wikimedia\Rdbms\Database->makeQueryException(string, integer, string, string)
#1 /var/www/scores/w/includes/libs/rdbms/database/Database.php(1200): Wikimedia\Rdbms\Database->reportQueryError(string, integer, string, string, boolean)
#2 /var/www/scores/w/includes/libs/rdbms/database/Database.php(1653): Wikimedia\Rdbms\Database->query(string, string)
#3 /var/www/scores/w/includes/libs/rdbms/database/Database.php(1730): Wikimedia\Rdbms\Database->select(array, array, array, string, array, array)
#4 /var/www/scores/w/includes/page/WikiPage.php(380): Wikimedia\Rdbms\Database->selectRow(array, array, array, string, array, array)
#5 /var/www/scores/w/includes/page/WikiPage.php(400): WikiPage->pageData(Wikimedia\Rdbms\DatabaseMysqli, array, array)
#6 /var/www/scores/w/includes/page/WikiPage.php(438): WikiPage->pageDataFromTitle(Wikimedia\Rdbms\DatabaseMysqli, Title, array)
#7 /var/www/scores/w/includes/page/WikiPage.php(522): WikiPage->loadPageData()
#8 /var/www/scores/w/includes/page/WikiPage.php(563): WikiPage->exists()
#9 /var/www/scores/w/includes/page/WikiPage.php(229): WikiPage->getContentModel()
#10 /var/www/scores/w/includes/page/WikiPage.php(216): WikiPage->getContentHandler()
#11 /var/www/scores/w/includes/actions/Action.php(96): WikiPage->getActionOverrides()
#12 /var/www/scores/w/includes/actions/Action.php(154): Action::factory(string, WikiPage, RequestContext)
#13 /var/www/scores/w/includes/MediaWiki.php(156): Action::getActionName(RequestContext)
#14 /var/www/scores/w/includes/MediaWiki.php(778): MediaWiki->getAction()
#15 /var/www/scores/w/includes/MediaWiki.php(524): MediaWiki->main()
#16 /var/www/scores/w/index.php(42): MediaWiki->run()
#17 {main}


The MySQL user and its grants were not changed and appear to be valid:

MariaDB [scores]> show grants for 'scores'@'localhost';
+----------------------------------------------------------------------------------------------------------------------+
| Grants for scores@localhost                                                                                   |
+----------------------------------------------------------------------------------------------------------------------+
| GRANT USAGE ON *.* TO 'scores'@'localhost' IDENTIFIED BY PASSWORD 'deleted' |
| GRANT ALL PRIVILEGES ON `scores`.* TO 'scores'@'localhost'                                             |
+----------------------------------------------------------------------------------------------------------------------+
2 rows in set (0.00 sec)

The table is there:

MariaDB [scores]> DESC scores.page;
+--------------------+---------------------+------+-----+---------+----------------+
| Field              | Type                | Null | Key | Default | Extra          |
+--------------------+---------------------+------+-----+---------+----------------+
| page_id            | int(8) unsigned     | NO   | PRI | NULL    | auto_increment |
| page_namespace     | int(11)             | NO   | MUL | NULL    |                |
| page_title         | varchar(255)        | NO   |     | NULL    |                |
| page_restrictions  | tinyblob            | NO   |     | NULL    |                |
| page_is_redirect   | tinyint(1) unsigned | NO   | MUL | 0       |                |
| page_is_new        | tinyint(1) unsigned | NO   |     | 0       |                |
| page_random        | double unsigned     | NO   | MUL | NULL    |                |
| page_touched       | char(14)            | NO   |     |         |                |
| page_latest        | int(8) unsigned     | NO   |     | NULL    |                |
| page_len           | int(8) unsigned     | NO   | MUL | NULL    |                |
| page_content_model | varbinary(32)       | YES  |     | NULL    |                |
| page_links_updated | varbinary(14)       | YES  |     | NULL    |                |
| page_lang          | varbinary(35)       | YES  |     | NULL    |                |
+--------------------+---------------------+------+-----+---------+----------------+
75.181.32.126 (talkcontribs)

I figured this out: $wgDBmwschema was defined in my LocalSettings.php. Normally this is only used for Postgresql and I've never been on Postgresql so I'm not sure how this got in there. It is a very old wiki, maybe it was a default some time ago. By deleting $wgDBmwschema I was able to get the site to come up right away.

37.234.98.61 (talkcontribs)

"$wgDBmwschema was defined in my LocalSettings.php ... used for Postgresql"

this postgres config still screws the upgrades of mysql installs at debian stretch-buster dist-upgrades :)

Thanks for sharing, Greenwood Village!

Reply to "Unable to query $wgDBname after 1.31 upgrade"