What is the problem?
When creating a new block via the API, I get the following exception in the logs:
2025-01-02 11:50:52 c701508a76c8 enwiki: [7ce0c2725f3de2fb9cf3cbd5] /w/api.php InvalidArgumentException: Wikimedia\Rdbms\Platform\SQLPlatform::makeList: empty input for field bt_id
#0 /var/www/html/w/includes/libs/rdbms/platform/SQLPlatform.php(1634): Wikimedia\Rdbms\Platform\SQLPlatform->makeList()
#1 /var/www/html/w/includes/libs/rdbms/database/Database.php(1525): Wikimedia\Rdbms\Platform\SQLPlatform->updateSqlText()
#2 /var/www/html/w/includes/libs/rdbms/database/DBConnRef.php(127): Wikimedia\Rdbms\Database->update()
#3 /var/www/html/w/includes/libs/rdbms/database/DBConnRef.php(413): Wikimedia\Rdbms\DBConnRef->__call()
#4 /var/www/html/w/includes/libs/rdbms/querybuilder/UpdateQueryBuilder.php(335): Wikimedia\Rdbms\DBConnRef->update()
#5 /var/www/html/w/includes/block/DatabaseBlockStore.php(899): Wikimedia\Rdbms\UpdateQueryBuilder->execute()
#6 /var/www/html/w/includes/block/DatabaseBlockStore.php(872): MediaWiki\Block\DatabaseBlockStore->releaseTargets()
#7 /var/www/html/w/includes/block/DatabaseBlockStore.php(767): MediaWiki\Block\DatabaseBlockStore->deleteBlockRows()
#8 /var/www/html/w/includes/deferred/AutoCommitUpdate.php(47): MediaWiki\Block\DatabaseBlockStore->MediaWiki\Block\{closure}()
#9 /var/www/html/w/includes/deferred/DeferredUpdates.php(462): MediaWiki\Deferred\AutoCommitUpdate->doUpdate()
#10 /var/www/html/w/includes/deferred/DeferredUpdates.php(204): MediaWiki\Deferred\DeferredUpdates::attemptUpdate()
#11 /var/www/html/w/includes/deferred/DeferredUpdates.php(291): MediaWiki\Deferred\DeferredUpdates::run()
#12 /var/www/html/w/includes/deferred/DeferredUpdatesScope.php(243): MediaWiki\Deferred\DeferredUpdates::MediaWiki\Deferred\{closure}()
#13 /var/www/html/w/includes/deferred/DeferredUpdatesScope.php(172): MediaWiki\Deferred\DeferredUpdatesScope->processStageQueue()
#14 /var/www/html/w/includes/deferred/DeferredUpdates.php(310): MediaWiki\Deferred\DeferredUpdatesScope->processUpdates()
#15 /var/www/html/w/includes/MediaWikiEntryPoint.php(307): MediaWiki\Deferred\DeferredUpdates::doUpdates()
#16 /var/www/html/w/includes/MediaWikiEntryPoint.php(190): MediaWiki\MediaWikiEntryPoint->commitMainTransaction()
#17 /var/www/html/w/includes/MediaWikiEntryPoint.php(173): MediaWiki\MediaWikiEntryPoint->doPrepareForOutput()
#18 /var/www/html/w/includes/MediaWiki.php(90): MediaWiki\MediaWikiEntryPoint->prepareForOutput()
#19 /var/www/html/w/includes/api/ApiMain.php(972): MediaWiki::preOutputCommit()
#20 /var/www/html/w/includes/api/ApiMain.php(915): MediaWiki\Api\ApiMain->executeActionWithErrorHandling()
#21 /var/www/html/w/includes/api/ApiEntryPoint.php(153): MediaWiki\Api\ApiMain->execute()
#22 /var/www/html/w/includes/MediaWikiEntryPoint.php(201): MediaWiki\Api\ApiEntryPoint->execute()
#23 /var/www/html/w/api.php(44): MediaWiki\MediaWikiEntryPoint->run()
#24 {main}I have not seen this when I am updating an existing block or with multiblocks disabled.
Steps to reproduce problem
- Via the API, create a block against a user who is not blocked or a new block against an already blocked user
- For example, assuming you are testing in a local docker environment and in LocalSettings.php $wgEnableMultiBlocks = true;:
- Go to Special:ApiSandbox#action=block
- Click the "action=block" tab
- In the "user" parameter, enter a username or IP
- Check the "newblock" parameter
- Click "Auto-fill token" and submit
- Open <mediawiki directory>/cache/mw-error.log to see the exception
Environment
Wiki(s): local docker MediaWiki 1.44.0-alpha (ec80a6a) 07:05, 2 January 2025.