Page MenuHomePhabricator

parsertests cannot use MySQL: cannot reopen table: page_restrictions
Open, Needs TriagePublicBUG REPORT

Description

I was attempting to run the parser tests on my local install and i keep running into the following errors:

composer phpunit:entrypoint -- --testsuite parsertests

1) LegacyParserTest_Core_1__comments
Wikimedia\Rdbms\DBQueryError: Error 1137: Can't reopen table: 'page_restrictions'
Function: MediaWiki\Permissions\RestrictionStore::getCascadeProtectionSourcesInternalJoined
Query: (SELECT  pr_expiry,pr_page,page_namespace,page_title,pr_type,pr_level,'il' AS `type`  FROM `parsertest_page_restrictions` `page_restrictions` JOIN `parsertest_page` `page` ON ((page_id=pr_page)) JOIN `parsertest_imagelinks` `imagelinks` ON ((il_from=pr_page))   WHERE pr_cascade = 1 AND il_to = 'Foobar.jpg'  ) UNION ALL (SELECT  pr_expiry,pr_page,page_namespace,page_title,pr_type,pr_level,'tl' AS `type`  FROM `parsertest_page_restrictions` `page_restrictions` JOIN `parsertest_page` `page` ON ((page_id=pr_page)) JOIN `parsertest_templatelinks` `templatelinks` ON ((tl_from=pr_page))   WHERE pr_cascade = 1 AND (1=0)  )
 in /Users/hartman/Development/wikimedia-git/mediawiki-core/includes/libs/Rdbms/Database/Database.php:1227
Stack trace:
#0 /Users/hartman/Development/wikimedia-git/mediawiki-core/includes/libs/Rdbms/Database/Database.php(1211): Wikimedia\Rdbms\Database->getQueryException('Can't reopen ta...', 1137, '(SELECT  pr_exp...', 'MediaWiki\\Permi...')
#1 /Users/hartman/Development/wikimedia-git/mediawiki-core/includes/libs/Rdbms/Database/Database.php(1185): Wikimedia\Rdbms\Database->getQueryExceptionAndLog('Can't reopen ta...', 1137, '(SELECT  pr_exp...', 'MediaWiki\\Permi...')
#2 /Users/hartman/Development/wikimedia-git/mediawiki-core/includes/libs/Rdbms/Database/Database.php(642): Wikimedia\Rdbms\Database->reportQueryError('Can't reopen ta...', 1137, '(SELECT  pr_exp...', 'MediaWiki\\Permi...', false)
#3 /Users/hartman/Development/wikimedia-git/mediawiki-core/includes/libs/Rdbms/Database/DBConnRef.php(128): Wikimedia\Rdbms\Database->query(Object(Wikimedia\Rdbms\Query), 'MediaWiki\\Permi...', 32)
#4 /Users/hartman/Development/wikimedia-git/mediawiki-core/includes/libs/Rdbms/Database/DBConnRef.php(333): Wikimedia\Rdbms\DBConnRef->__call('query', Array)
#5 /Users/hartman/Development/wikimedia-git/mediawiki-core/includes/libs/Rdbms/QueryBuilder/UnionQueryBuilder.php(174): Wikimedia\Rdbms\DBConnRef->query(Object(Wikimedia\Rdbms\Query), 'MediaWiki\\Permi...')
#6 /Users/hartman/Development/wikimedia-git/mediawiki-core/includes/Permissions/RestrictionStore.php(728): Wikimedia\Rdbms\UnionQueryBuilder->fetchResultSet()
#7 /Users/hartman/Development/wikimedia-git/mediawiki-core/includes/Permissions/RestrictionStore.php(536): MediaWiki\Permissions\RestrictionStore->getCascadeProtectionSourcesInternalJoined(Object(MediaWiki\Page\PageIdentityValue))
#8 /Users/hartman/Development/wikimedia-git/mediawiki-core/includes/Cache/BacklinkCache.php(534): MediaWiki\Permissions\RestrictionStore->getCascadeProtectionSources(Object(MediaWiki\Page\PageIdentityValue))
#9 /Users/hartman/Development/wikimedia-git/mediawiki-core/includes/Deferred/LinksUpdate/LinksUpdate.php(253): MediaWiki\Cache\BacklinkCache->getCascadeProtectedLinkPages()
#10 /Users/hartman/Development/wikimedia-git/mediawiki-core/includes/Deferred/LinksUpdate/LinksUpdate.php(217): MediaWiki\Deferred\LinksUpdate\LinksUpdate->queueRecursiveJobs()
#11 /Users/hartman/Development/wikimedia-git/mediawiki-core/includes/Deferred/LinksUpdate/LinksUpdate.php(171): MediaWiki\Deferred\LinksUpdate\LinksUpdate->doIncrementalUpdate()
#12 /Users/hartman/Development/wikimedia-git/mediawiki-core/includes/Deferred/DeferredUpdates.php(445): MediaWiki\Deferred\LinksUpdate\LinksUpdate->doUpdate()
#13 /Users/hartman/Development/wikimedia-git/mediawiki-core/includes/Deferred/RefreshSecondaryDataUpdate.php(99): MediaWiki\Deferred\DeferredUpdates::attemptUpdate(Object(MediaWiki\Deferred\LinksUpdate\LinksUpdate))
#14 /Users/hartman/Development/wikimedia-git/mediawiki-core/includes/Deferred/DeferredUpdates.php(445): MediaWiki\Deferred\RefreshSecondaryDataUpdate->doUpdate()
#15 /Users/hartman/Development/wikimedia-git/mediawiki-core/includes/Deferred/DeferredUpdates.php(187): MediaWiki\Deferred\DeferredUpdates::attemptUpdate(Object(MediaWiki\Deferred\RefreshSecondaryDataUpdate))
#16 /Users/hartman/Development/wikimedia-git/mediawiki-core/includes/Deferred/DeferredUpdates.php(285): MediaWiki\Deferred\DeferredUpdates::run(Object(MediaWiki\Deferred\RefreshSecondaryDataUpdate))
#17 /Users/hartman/Development/wikimedia-git/mediawiki-core/includes/Deferred/DeferredUpdatesScope.php(226): MediaWiki\Deferred\DeferredUpdates::{closure:{closure:MediaWiki\Deferred\DeferredUpdates::doUpdates():270}:284}(Object(MediaWiki\Deferred\RefreshSecondaryDataUpdate), 2)
#18 /Users/hartman/Development/wikimedia-git/mediawiki-core/includes/Deferred/DeferredUpdatesScope.php(158): MediaWiki\Deferred\DeferredUpdatesScope->processStageQueue(2, 2, Object(Closure))
#19 /Users/hartman/Development/wikimedia-git/mediawiki-core/includes/Deferred/DeferredUpdates.php(282): MediaWiki\Deferred\DeferredUpdatesScope->processUpdates(2, Object(Closure))
#20 /Users/hartman/Development/wikimedia-git/mediawiki-core/includes/Deferred/DeferredUpdatesScope.php(229): MediaWiki\Deferred\DeferredUpdates::{closure:MediaWiki\Deferred\DeferredUpdates::doUpdates():270}(Object(MediaWiki\Deferred\AutoCommitUpdate), 2)
#21 /Users/hartman/Development/wikimedia-git/mediawiki-core/includes/Deferred/DeferredUpdatesScope.php(158): MediaWiki\Deferred\DeferredUpdatesScope->processStageQueue(1, 2, Object(Closure))
#22 /Users/hartman/Development/wikimedia-git/mediawiki-core/includes/Deferred/DeferredUpdates.php(268): MediaWiki\Deferred\DeferredUpdatesScope->processUpdates(0, Object(Closure))
#23 /Users/hartman/Development/wikimedia-git/mediawiki-core/includes/Deferred/DeferredUpdates.php(359): MediaWiki\Deferred\DeferredUpdates::doUpdates(0)
#24 /Users/hartman/Development/wikimedia-git/mediawiki-core/includes/Deferred/DeferredUpdates.php(142): MediaWiki\Deferred\DeferredUpdates::tryOpportunisticExecute()
#25 /Users/hartman/Development/wikimedia-git/mediawiki-core/includes/FileRepo/File/LocalFile.php(2250): MediaWiki\Deferred\DeferredUpdates::addUpdate(Object(MediaWiki\Deferred\AutoCommitUpdate), 1)
#26 /Users/hartman/Development/wikimedia-git/mediawiki-core/includes/libs/Rdbms/Database/Database.php(2068): MediaWiki\FileRepo\File\LocalFile::{closure:MediaWiki\FileRepo\File\LocalFile::recordUpload3():2249}(1)
#27 /Users/hartman/Development/wikimedia-git/mediawiki-core/includes/libs/Rdbms/Database/Database.php(1981): Wikimedia\Rdbms\Database->runOnTransactionIdleCallbacks(1, Array)
#28 /Users/hartman/Development/wikimedia-git/mediawiki-core/includes/libs/Rdbms/Database/DBConnRef.php(128): Wikimedia\Rdbms\Database->onTransactionCommitOrIdle(Object(Closure), 'MediaWiki\\FileR...')
#29 /Users/hartman/Development/wikimedia-git/mediawiki-core/includes/libs/Rdbms/Database/DBConnRef.php(726): Wikimedia\Rdbms\DBConnRef->__call('onTransactionCo...', Array)
#30 /Users/hartman/Development/wikimedia-git/mediawiki-core/includes/FileRepo/File/LocalFile.php(2249): Wikimedia\Rdbms\DBConnRef->onTransactionCommitOrIdle(Object(Closure), 'MediaWiki\\FileR...')
#31 /Users/hartman/Development/wikimedia-git/mediawiki-core/tests/Common/Parser/ParserTestRunner.php(2599): MediaWiki\FileRepo\File\LocalFile->recordUpload3('', 'Upload of some ...', 'Some lame file', Object(MediaWiki\Permissions\UltimateAuthority), Array, '20010115123500')
#32 /Users/hartman/Development/wikimedia-git/mediawiki-core/tests/phpunit/suites/ParserTestTopLevelSuite.php(178): MediaWiki\Tests\Common\Parser\ParserTestRunner->setupUploads(Object(Wikimedia\ScopedCallback))
#33 /Users/hartman/Development/wikimedia-git/mediawiki-core/tests/phpunit/suites/SuiteEventsTrait.php(32): ParserTestTopLevelSuite->setUp()
#34 /Users/hartman/Development/wikimedia-git/mediawiki-core/vendor/phpunit/phpunit/src/Framework/TestSuite.php(685): ParserTestTopLevelSuite->run(Object(PHPUnit\Framework\TestResult))
#35 /Users/hartman/Development/wikimedia-git/mediawiki-core/vendor/phpunit/phpunit/src/Framework/TestSuite.php(685): PHPUnit\Framework\TestSuite->run(Object(PHPUnit\Framework\TestResult))
#36 /Users/hartman/Development/wikimedia-git/mediawiki-core/vendor/phpunit/phpunit/src/TextUI/TestRunner.php(651): PHPUnit\Framework\TestSuite->run(Object(PHPUnit\Framework\TestResult))
#37 /Users/hartman/Development/wikimedia-git/mediawiki-core/vendor/phpunit/phpunit/src/TextUI/Command.php(146): PHPUnit\TextUI\TestRunner->run(Object(PHPUnit\Framework\TestSuite), Array, Array, true)
#38 /Users/hartman/Development/wikimedia-git/mediawiki-core/vendor/phpunit/phpunit/src/TextUI/Command.php(99): PHPUnit\TextUI\Command->run(Array, true)
#39 /Users/hartman/Development/wikimedia-git/mediawiki-core/vendor/phpunit/phpunit/phpunit(107): PHPUnit\TextUI\Command::main()
#40 /Users/hartman/Development/wikimedia-git/mediawiki-core/vendor/bin/phpunit(122): include('/Users/hartman/...')
#41 {main}

MySQL 8.0 macos
Not sure if this is new, haven't run parser tests locally in a long time.

Event Timeline

unblocked myself by running them in a clean docker setup... still curious what is causing this however. will investigate more tomorrow.

I'm having this issue as well when using MySQL. Switching to MariaDB fixed it for me.

mysql cannot refer to the same temporary table twice in the same query apparently, which this definetly does.

(SELECT  pr_expiry,pr_page,page_namespace,page_title,pr_type,pr_level,'il' AS `type`  FROM `parsertest_page_restrictions` `page_restrictions` JOIN `parsertest_page` `page` ON ((page_id=pr_page)) JOIN `parsertest_imagelinks` `imagelinks` ON ((il_from=pr_page))   WHERE pr_cascade = 1 AND il_to = 'Foobar.jpg'  ) UNION ALL (SELECT  pr_expiry,pr_page,page_namespace,page_title,pr_type,pr_level,'tl' AS `type`  FROM `parsertest_page_restrictions` `page_restrictions` JOIN `parsertest_page` `page` ON ((page_id=pr_page)) JOIN `parsertest_templatelinks` `templatelinks` ON ((tl_from=pr_page))   WHERE pr_cascade = 1 AND (1=0)  )
TheDJ renamed this task from parsertests fail with cannot reopen table: page_restrictions to parsertests cannot use MySQL: cannot reopen table: page_restrictions.Dec 11 2025, 9:13 PM