Page MenuHomePhabricator

flaggedtemplates table cannot be created
Closed, ResolvedPublicBUG REPORT

Description

List of steps to reproduce (step by step, including full links if applicable):

  • Prepare a new database.
  • Install MediaWiki.
  • Add wfLoadExtension( 'FlaggedRevs' ); to your LocalSettings.php
  • Execute update.php

What happens?:

The first execution fails with the below output:

...flaggedimages doesn't exist.
Wikimedia\Rdbms\DBQueryError from line 1606 of /srv/femiwiki.com/includes/libs/rdbms/database/Database.php: Error 1171: All parts of a PRIMARY KEY must be NOT NULL; if you need NULL in a key, use UNIQUE instead (mysql)
Function: Wikimedia\Rdbms\Database::sourceFile( /srv/femiwiki.com/extensions/FlaggedRevs/backend/schema/mysql/FlaggedRevs.sql )
Query: CREATE TABLE IF NOT EXISTS `flaggedtemplates` (
 ft_rev_id integer unsigned NOT NULL,
 ft_tmp_rev_id integer unsigned NULL,
 PRIMARY KEY (ft_rev_id, ft_tmp_rev_id)
 ) ENGINE=InnoDB, DEFAULT CHARSET=binary


#0 /srv/femiwiki.com/includes/libs/rdbms/database/Database.php(1590): Wikimedia\Rdbms\Database->getQueryException('All parts of a ...', 1171, 'CREATE TABLE IF...', 'Wikimedia\\Rdbms...')
#1 /srv/femiwiki.com/includes/libs/rdbms/database/Database.php(1564): Wikimedia\Rdbms\Database->getQueryExceptionAndLog('All parts of a ...', 1171, 'CREATE TABLE IF...', 'Wikimedia\\Rdbms...')
#2 /srv/femiwiki.com/includes/libs/rdbms/database/Database.php(1173): Wikimedia\Rdbms\Database->reportQueryError('All parts of a ...', 1171, 'CREATE TABLE IF...', 'Wikimedia\\Rdbms...', false)
#3 /srv/femiwiki.com/includes/libs/rdbms/database/Database.php(4954): Wikimedia\Rdbms\Database->query('CREATE TABLE IF...', 'Wikimedia\\Rdbms...')
#4 /srv/femiwiki.com/includes/libs/rdbms/database/Database.php(4889): Wikimedia\Rdbms\Database->sourceStream(Resource id #2684, NULL, NULL, 'Wikimedia\\Rdbms...', NULL)
#5 /srv/femiwiki.com/includes/libs/rdbms/database/DBConnRef.php(69): Wikimedia\Rdbms\Database->sourceFile('/srv/femiwiki.c...')
#6 /srv/femiwiki.com/includes/libs/rdbms/database/MaintainableDBConnRef.php(35): Wikimedia\Rdbms\DBConnRef->__call('sourceFile', Array)
#7 /srv/femiwiki.com/includes/installer/DatabaseUpdater.php(704): Wikimedia\Rdbms\MaintainableDBConnRef->sourceFile('/srv/femiwiki.c...')
#8 /srv/femiwiki.com/includes/installer/DatabaseUpdater.php(749): DatabaseUpdater->applyPatch('/srv/femiwiki.c...', true, 'Creating flagge...')
#9 /srv/femiwiki.com/includes/installer/DatabaseUpdater.php(533): DatabaseUpdater->addTable('flaggedrevs', '/srv/femiwiki.c...', true)
#10 /srv/femiwiki.com/includes/installer/DatabaseUpdater.php(501): DatabaseUpdater->runUpdates(Array, true)
#11 /srv/femiwiki.com/maintenance/update.php(193): DatabaseUpdater->doUpdates(Array)
#12 /srv/femiwiki.com/maintenance/doMaintenance.php(114): UpdateMediaWiki->execute()
#13 /srv/femiwiki.com/maintenance/update.php(264): require_once('/srv/femiwiki.c...')
#14 {main}

Following executions fail with:

Wikimedia\Rdbms\DBQueryError from line 1606 of /srv/femiwiki.com/includes/libs/rdbms/database/Database.php: Error 1146: Table 'femiwiki.flaggedpage_config' doesn't exist (mysql)
Function: FlaggableWikiPage::pageData
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,page_lang,fpc_override,fpc_level,fpc_expiry,fp_pending_since,fp_stable,fp_reviewed  FROM `page` LEFT JOIN `flaggedpages` ON ((fp_page_id = page_id)) LEFT JOIN `flaggedpage_config` ON ((fpc_page_id = page_id))   WHERE page_namespace = 10 AND page_title = '플로우언급'  LIMIT 1  

#0 /srv/femiwiki.com/includes/libs/rdbms/database/Database.php(1590): Wikimedia\Rdbms\Database->getQueryException('Table 'femiwiki...', 1146, 'SELECT  page_id...', 'FlaggableWikiPa...')
#1 /srv/femiwiki.com/includes/libs/rdbms/database/Database.php(1564): Wikimedia\Rdbms\Database->getQueryExceptionAndLog('Table 'femiwiki...', 1146, 'SELECT  page_id...', 'FlaggableWikiPa...')
#2 /srv/femiwiki.com/includes/libs/rdbms/database/Database.php(1173): Wikimedia\Rdbms\Database->reportQueryError('Table 'femiwiki...', 1146, 'SELECT  page_id...', 'FlaggableWikiPa...', false)
#3 /srv/femiwiki.com/includes/libs/rdbms/database/Database.php(1810): Wikimedia\Rdbms\Database->query('SELECT  page_id...', 'FlaggableWikiPa...', 32)
#4 /srv/femiwiki.com/includes/libs/rdbms/database/Database.php(1911): Wikimedia\Rdbms\Database->select(Array, Array, Array, 'FlaggableWikiPa...', Array, Array)
#5 /srv/femiwiki.com/includes/libs/rdbms/database/DBConnRef.php(69): Wikimedia\Rdbms\Database->selectRow(Array, Array, Array, 'FlaggableWikiPa...', Array, Array)
#6 /srv/femiwiki.com/includes/libs/rdbms/database/DBConnRef.php(337): Wikimedia\Rdbms\DBConnRef->__call('selectRow', Array)
#7 /srv/femiwiki.com/extensions/FlaggedRevs/backend/FlaggableWikiPage.php(384): Wikimedia\Rdbms\DBConnRef->selectRow(Array, Array, Array, 'FlaggableWikiPa...', Array, Array)
#8 /srv/femiwiki.com/includes/libs/objectcache/BagOStuff.php(202): FlaggableWikiPage::{closure}(60)
#9 /srv/femiwiki.com/extensions/FlaggedRevs/backend/FlaggableWikiPage.php(388): BagOStuff->getWithSetCallback('femiwiki:flagge...', 60, Object(Closure))
#10 /srv/femiwiki.com/includes/page/WikiPage.php(433): FlaggableWikiPage->pageData(Object(Wikimedia\Rdbms\MaintainableDBConnRef), Array, Array)
#11 /srv/femiwiki.com/extensions/FlaggedRevs/backend/FlaggableWikiPage.php(414): WikiPage->pageDataFromTitle(Object(Wikimedia\Rdbms\MaintainableDBConnRef), Object(Title))
#12 /srv/femiwiki.com/extensions/FlaggedRevs/backend/FlaggedRevsHooks.php(416): FlaggableWikiPage->loadPageData(1)
#13 /srv/femiwiki.com/includes/HookContainer/HookContainer.php(338): FlaggedRevsHooks::maybeMakeEditReviewed(Object(WikiPage), Object(MediaWiki\Revision\RevisionStoreRecord), false, Object(User), Array)
#14 /srv/femiwiki.com/includes/HookContainer/HookContainer.php(137): MediaWiki\HookContainer\HookContainer->callLegacyHook('RevisionFromEdi...', Array, Array, Array)
#15 /srv/femiwiki.com/includes/HookContainer/HookRunner.php(3184): MediaWiki\HookContainer\HookContainer->run('RevisionFromEdi...', Array)
#16 /srv/femiwiki.com/includes/Storage/PageUpdater.php(1471): MediaWiki\HookContainer\HookRunner->onRevisionFromEditComplete(Object(WikiPage), Object(MediaWiki\Revision\RevisionStoreRecord), false, Object(User), Array)
#17 /srv/femiwiki.com/includes/Storage/PageUpdater.php(911): MediaWiki\Storage\PageUpdater->doCreate(Object(CommentStoreComment))
#18 /srv/femiwiki.com/includes/page/WikiPage.php(1993): MediaWiki\Storage\PageUpdater->saveRevision(Object(CommentStoreComment), 24)
#19 /srv/femiwiki.com/extensions/Flow/maintenance/FlowCreateTemplates.php(117): WikiPage->doUserEditContent(Object(WikitextContent), Object(User), Object(CommentStoreComment), 24)
#20 /srv/femiwiki.com/extensions/Flow/maintenance/FlowCreateTemplates.php(91): FlowCreateTemplates->create(Object(Title), Object(WikitextContent))
#21 /srv/femiwiki.com/maintenance/includes/LoggedUpdateMaintenance.php(45): FlowCreateTemplates->doDBUpdates()
#22 /srv/femiwiki.com/maintenance/update.php(205): LoggedUpdateMaintenance->execute()
#23 /srv/femiwiki.com/maintenance/doMaintenance.php(114): UpdateMediaWiki->execute()
#24 /srv/femiwiki.com/maintenance/update.php(264): require_once('/srv/femiwiki.c...')
#25 {main}
[51aaba7a9702711243b66791] [no req]   Wikimedia\Rdbms\DBTransactionError: Explicit transaction still active; a caller might have failed to call endAtomic() or cancelAtomic().
Backtrace:
from /srv/femiwiki.com/includes/libs/rdbms/loadbalancer/LoadBalancer.php(1694)
#0 /srv/femiwiki.com/includes/libs/rdbms/loadbalancer/LoadBalancer.php(2223): Wikimedia\Rdbms\LoadBalancer->Wikimedia\Rdbms\{closure}(Wikimedia\Rdbms\DatabaseMysqli)
#1 /srv/femiwiki.com/includes/libs/rdbms/loadbalancer/LoadBalancer.php(1729): Wikimedia\Rdbms\LoadBalancer->forEachOpenPrimaryConnection(Closure)
#2 /srv/femiwiki.com/includes/libs/rdbms/lbfactory/LBFactory.php(249): Wikimedia\Rdbms\LoadBalancer->approvePrimaryChanges(array, string, integer)
#3 /srv/femiwiki.com/includes/libs/rdbms/lbfactory/LBFactorySimple.php(145): Wikimedia\Rdbms\LBFactory::Wikimedia\Rdbms\{closure}(Wikimedia\Rdbms\LoadBalancer, string, array)
#4 /srv/femiwiki.com/includes/libs/rdbms/lbfactory/LBFactory.php(251): Wikimedia\Rdbms\LBFactorySimple->forEachLB(Closure, array)
#5 /srv/femiwiki.com/includes/libs/rdbms/lbfactory/LBFactory.php(310): Wikimedia\Rdbms\LBFactory->forEachLBCallMethod(string, array)
#6 /srv/femiwiki.com/maintenance/includes/Maintenance.php(1268): Wikimedia\Rdbms\LBFactory->commitPrimaryChanges(string)
#7 /srv/femiwiki.com/maintenance/doMaintenance.php(136): Maintenance->shutdown()
#8 /srv/femiwiki.com/maintenance/update.php(264): require_once(string)
#9 {main}

What should have happened instead?:

Database update should be done.

Software version (if not a Wikimedia wiki), browser information, screenshots, other information, etc.:

  • MediaWiki 1.38.0
  • Database: MySQL

The CREATE TABLE statement was last edited in Dec 2021.
https://gerrit.wikimedia.org/r/c/mediawiki/extensions/FlaggedRevs/+/743403

Event Timeline

Ladsgroup renamed this task from flaggedimages table cannot be created to flaggedtemplates table cannot be created.Jun 3 2022, 3:16 PM
Ladsgroup subscribed.

flaggedimages should not be created in the first place. I killed it with my bare hands. flaggedtemplates otoh, needs fixing. I'll do it soon.

I've never written a database patch, but if there is no one to do this, I will. Should I?

Change 812440 had a related patch set uploaded (by Lens0021; author: Lens0021):

[mediawiki/extensions/FlaggedRevs@master] Make ft_tmp_rev_id in flaggedtemplates NOT NULL

https://gerrit.wikimedia.org/r/812440

Umherirrender assigned this task to Lens0021.
Umherirrender removed a project: Patch-For-Review.
Umherirrender subscribed.

It does not fail on my local mysql and it is converted to a not null field when looking at the table structure, but it does not hurt to be explicit here, when there is a mysql version where it can fail. postgres and sqlite already has it not null.

Change 812364 had a related patch set uploaded (by Umherirrender; author: Lens0021):

[mediawiki/extensions/FlaggedRevs@REL1_38] Make ft_tmp_rev_id in flaggedtemplates NOT NULL

https://gerrit.wikimedia.org/r/812364

Change 812440 merged by jenkins-bot:

[mediawiki/extensions/FlaggedRevs@master] Make ft_tmp_rev_id in flaggedtemplates NOT NULL

https://gerrit.wikimedia.org/r/812440

Change 812364 merged by jenkins-bot:

[mediawiki/extensions/FlaggedRevs@REL1_38] Make ft_tmp_rev_id in flaggedtemplates NOT NULL

https://gerrit.wikimedia.org/r/812364