Page MenuHomePhabricator

Exception caught when deleting a page
Closed, ResolvedPublic

Description

MediaWiki internal error.

Original exception: [4b25f3714072dbb4bbabaa1b] /w/index.php?title=User:PlavorSeol/47&action=delete_page_permanently Wikimedia\Rdbms\DBQueryError from line 1443 of /var/www/html/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: DELETE FROM searchindex WHERE si_page = '171'
Function: ActionDeletePagePermanently::deletePermanently
Error: 1 no such column: si_page

Backtrace:
#0 /var/www/html/w/includes/libs/rdbms/database/Database.php(1413): Wikimedia\Rdbms\Database->makeQueryException(string, integer, string, string)
#1 /var/www/html/w/includes/libs/rdbms/database/Database.php(1186): Wikimedia\Rdbms\Database->reportQueryError(string, integer, string, string, boolean)
#2 /var/www/html/w/includes/libs/rdbms/database/Database.php(2892): Wikimedia\Rdbms\Database->query(string, string)
#3 /var/www/html/w/extensions/DeletePagesForGood/ActionDeletePagePermanently.php(86): Wikimedia\Rdbms\Database->delete(string, string, string)
#4 /var/www/html/w/extensions/DeletePagesForGood/ActionDeletePagePermanently.php(53): ActionDeletePagePermanently->deletePermanently(Title)
#5 /var/www/html/w/includes/htmlform/HTMLForm.php(662): ActionDeletePagePermanently->onSubmit(array, OOUIHTMLForm)
#6 /var/www/html/w/includes/htmlform/HTMLForm.php(554): HTMLForm->trySubmit()
#7 /var/www/html/w/includes/htmlform/HTMLForm.php(569): HTMLForm->tryAuthorizedSubmit()
#8 /var/www/html/w/includes/actions/FormAction.php(143): HTMLForm->show()
#9 /var/www/html/w/includes/MediaWiki.php(500): FormAction->show()
#10 /var/www/html/w/includes/MediaWiki.php(294): MediaWiki->performAction(Article, Title)
#11 /var/www/html/w/includes/MediaWiki.php(867): MediaWiki->performRequest()
#12 /var/www/html/w/includes/MediaWiki.php(524): MediaWiki->main()
#13 /var/www/html/w/index.php(42): MediaWiki->run()
#14 {main}

Exception caught inside exception handler: [4b25f3714072dbb4bbabaa1b] /w/index.php?title=User:PlavorSeol/47&action=delete_page_permanently Wikimedia\Rdbms\DBTransactionStateError from line 1298 of /var/www/html/w/includes/libs/rdbms/database/Database.php: Cannot execute query from LinkBatch::doQuery (for Skin::preloadExistence) while transaction status is ERROR.
Backtrace:
#0 /var/www/html/w/includes/libs/rdbms/database/Database.php(1087): Wikimedia\Rdbms\Database->assertTransactionStatus(string, string)
#1 /var/www/html/w/includes/libs/rdbms/database/Database.php(1640): Wikimedia\Rdbms\Database->query(string, string)
#2 /var/www/html/w/includes/cache/LinkBatch.php(210): Wikimedia\Rdbms\Database->select(string, array, string, string)
#3 /var/www/html/w/includes/cache/LinkBatch.php(138): LinkBatch->doQuery()
#4 /var/www/html/w/includes/cache/LinkBatch.php(127): LinkBatch->executeInto(LinkCache)
#5 /var/www/html/w/includes/skins/Skin.php(302): LinkBatch->execute()
#6 /var/www/html/w/includes/skins/Skin.php(163): Skin->preloadExistence()
#7 /var/www/html/w/skins/Vector/includes/SkinVector.php(67): Skin->initPage(OutputPage)
#8 /var/www/html/w/includes/skins/SkinTemplate.php(224): SkinVector->initPage(OutputPage)
#9 /var/www/html/w/includes/OutputPage.php(2423): SkinTemplate->outputPage()
#10 /var/www/html/w/includes/exception/MWExceptionRenderer.php(136): OutputPage->output()
#11 /var/www/html/w/includes/exception/MWExceptionRenderer.php(53): MWExceptionRenderer::reportHTML(Wikimedia\Rdbms\DBQueryError)
#12 /var/www/html/w/includes/exception/MWExceptionHandler.php(75): MWExceptionRenderer::output(Wikimedia\Rdbms\DBQueryError, integer)
#13 /var/www/html/w/includes/exception/MWExceptionHandler.php(149): MWExceptionHandler::report(Wikimedia\Rdbms\DBQueryError)
#14 /var/www/html/w/includes/MediaWiki.php(551): MWExceptionHandler::handleException(Wikimedia\Rdbms\DBQueryError)
#15 /var/www/html/w/index.php(42): MediaWiki->run()
#16 {main}

Event Timeline

@PlavorSeol: what are your versions of MediaWiki and DeletePagesForGood? And do you use MySQL or PostgreSQL? If you can, try with a recent version of DeletePagesForGood.

@Paladox: I guess this is related or perhaps even fixed by 33c0174?

At that time, I was using one of MediaWiki 1.32.0 WMF build, and I'm currently using 1.33.0-wmf.8.
I use SQLite database.

@Seb35 @Paladox Still shows following error, even with latest version of DeletePagesForGood:

[874d008438c0368f80067450] /mediawiki/index.php?title=User:PlavorSeol/Test&action=delete_page_permanently Wikimedia\Rdbms\DBQueryError from line 1506 of C:\nginx\web\PlavorEXITBeta\mediawiki\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: DELETE FROM searchindex WHERE si_page = '331'
Function: ActionDeletePagePermanently::deletePermanently
Error: 1 no such column: si_page

Backtrace:

#0 C:\nginx\web\PlavorEXITBeta\mediawiki\includes\libs\rdbms\database\Database.php(1476): Wikimedia\Rdbms\Database->makeQueryException(string, integer, string, string)
#1 C:\nginx\web\PlavorEXITBeta\mediawiki\includes\libs\rdbms\database\Database.php(1236): Wikimedia\Rdbms\Database->reportQueryError(string, integer, string, string, boolean)
#2 C:\nginx\web\PlavorEXITBeta\mediawiki\includes\libs\rdbms\database\Database.php(2954): Wikimedia\Rdbms\Database->query(string, string)
#3 C:\nginx\web\PlavorEXITBeta\mediawiki\extensions\DeletePagesForGood\ActionDeletePagePermanently.php(86): Wikimedia\Rdbms\Database->delete(string, string, string)
#4 C:\nginx\web\PlavorEXITBeta\mediawiki\extensions\DeletePagesForGood\ActionDeletePagePermanently.php(53): ActionDeletePagePermanently->deletePermanently(Title)
#5 C:\nginx\web\PlavorEXITBeta\mediawiki\includes\htmlform\HTMLForm.php(663): ActionDeletePagePermanently->onSubmit(array, OOUIHTMLForm)
#6 C:\nginx\web\PlavorEXITBeta\mediawiki\includes\htmlform\HTMLForm.php(555): HTMLForm->trySubmit()
#7 C:\nginx\web\PlavorEXITBeta\mediawiki\includes\htmlform\HTMLForm.php(570): HTMLForm->tryAuthorizedSubmit()
#8 C:\nginx\web\PlavorEXITBeta\mediawiki\includes\actions\FormAction.php(143): HTMLForm->show()
#9 C:\nginx\web\PlavorEXITBeta\mediawiki\includes\MediaWiki.php(501): FormAction->show()
#10 C:\nginx\web\PlavorEXITBeta\mediawiki\includes\MediaWiki.php(294): MediaWiki->performAction(Article, Title)
#11 C:\nginx\web\PlavorEXITBeta\mediawiki\includes\MediaWiki.php(862): MediaWiki->performRequest()
#12 C:\nginx\web\PlavorEXITBeta\mediawiki\includes\MediaWiki.php(517): MediaWiki->main()
#13 C:\nginx\web\PlavorEXITBeta\mediawiki\index.php(42): MediaWiki->run()
#14 {main}

in the searchindex table it does have a si_page column.

see https://github.com/wikimedia/mediawiki/blob/master/maintenance/tables.sql#L1527

Did you run update.php?

@PlavorSeol if you keep running update.php it should get past that error i think :).

@Paladox I just switch to 1.33.0-alpha (which update.php works well) and ran update.php, but when I tried to delete a page permanently, still shows following error:

[dbb1ed6ad56d109713f50b7d] /mediawiki/index.php?title=User:PlavorSeol/Test&action=delete_page_permanently Wikimedia\Rdbms\DBQueryError from line 1506 of C:\nginx\web\PlavorEXITBeta\mediawiki\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: DELETE FROM searchindex WHERE si_page = '331'
Function: ActionDeletePagePermanently::deletePermanently
Error: 1 no such column: si_page

Backtrace:

#0 C:\nginx\web\PlavorEXITBeta\mediawiki\includes\libs\rdbms\database\Database.php(1476): Wikimedia\Rdbms\Database->makeQueryException(string, integer, string, string)
#1 C:\nginx\web\PlavorEXITBeta\mediawiki\includes\libs\rdbms\database\Database.php(1236): Wikimedia\Rdbms\Database->reportQueryError(string, integer, string, string, boolean)
#2 C:\nginx\web\PlavorEXITBeta\mediawiki\includes\libs\rdbms\database\Database.php(2954): Wikimedia\Rdbms\Database->query(string, string)
#3 C:\nginx\web\PlavorEXITBeta\mediawiki\extensions\DeletePagesForGood\ActionDeletePagePermanently.php(86): Wikimedia\Rdbms\Database->delete(string, string, string)
#4 C:\nginx\web\PlavorEXITBeta\mediawiki\extensions\DeletePagesForGood\ActionDeletePagePermanently.php(53): ActionDeletePagePermanently->deletePermanently(Title)
#5 C:\nginx\web\PlavorEXITBeta\mediawiki\includes\htmlform\HTMLForm.php(663): ActionDeletePagePermanently->onSubmit(array, OOUIHTMLForm)
#6 C:\nginx\web\PlavorEXITBeta\mediawiki\includes\htmlform\HTMLForm.php(555): HTMLForm->trySubmit()
#7 C:\nginx\web\PlavorEXITBeta\mediawiki\includes\htmlform\HTMLForm.php(570): HTMLForm->tryAuthorizedSubmit()
#8 C:\nginx\web\PlavorEXITBeta\mediawiki\includes\actions\FormAction.php(143): HTMLForm->show()
#9 C:\nginx\web\PlavorEXITBeta\mediawiki\includes\MediaWiki.php(501): FormAction->show()
#10 C:\nginx\web\PlavorEXITBeta\mediawiki\includes\MediaWiki.php(294): MediaWiki->performAction(Article, Title)
#11 C:\nginx\web\PlavorEXITBeta\mediawiki\includes\MediaWiki.php(862): MediaWiki->performRequest()
#12 C:\nginx\web\PlavorEXITBeta\mediawiki\includes\MediaWiki.php(517): MediaWiki->main()
#13 C:\nginx\web\PlavorEXITBeta\mediawiki\index.php(42): MediaWiki->run()
#14 {main}

Is there searchindex in the db?

type "describe searchindex".

Yes, there is searchindex table in my database.

Ok then type “describe searchindex” which will tell you if you have the column”

@Paladox There are 2 columns, si_title and si_text in searchindex table.
Note: I can't use DESCRIBE command since I'm using SQLite and it doesn't support DESCRIBE command.

This comment was removed by Paladox.

Change 479992 had a related patch set uploaded (by Paladox; owner: Paladox):
[mediawiki/extensions/DeletePagesForGood@master] Fix support for SQLite

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

@Paladox Still shows same error. But it works well when changing like this instead of that:

		if (!( $GLOBALS['wgDBtype'] == "postgres" || $GLOBALS['wgDBtype'] == "sqlite")) {
			# Delete search index...
			$dbw->delete( 'searchindex', [ 'si_page' => $id ], __METHOD__ );
		}

When database type is SQLite, it is NOT PostgreSQL, so $GLOBALS['wgDBtype'] !== "postgres" is also true. Therefore I think that if statement returned true regardless of database type. (When database type matches one of them, another one (not equal) returns true, and they are combined with or (||))

Change 479992 merged by jenkins-bot:
[mediawiki/extensions/DeletePagesForGood@master] Fix support for SQLite

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

Change 480735 had a related patch set uploaded (by Paladox; owner: Paladox):
[mediawiki/extensions/DeletePagesForGood@REL1_32] Fix support for SQLite

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

Change 480736 had a related patch set uploaded (by Paladox; owner: Paladox):
[mediawiki/extensions/DeletePagesForGood@REL1_31] Fix support for SQLite

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

Change 480737 had a related patch set uploaded (by Paladox; owner: Paladox):
[mediawiki/extensions/DeletePagesForGood@REL1_30] Fix support for SQLite

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

Change 480735 merged by jenkins-bot:
[mediawiki/extensions/DeletePagesForGood@REL1_32] Fix support for SQLite

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

Change 480736 merged by jenkins-bot:
[mediawiki/extensions/DeletePagesForGood@REL1_31] Fix support for SQLite

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

Change 480737 merged by jenkins-bot:
[mediawiki/extensions/DeletePagesForGood@REL1_30] Fix support for SQLite

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

Paladox claimed this task.

It should be fixed now! Please reopen if it is still a problem.