所以我安装了一个 Docker Wikibase 实例并从 WAMP64 Wikibase 实例导入了一个转储。它正确导入,一切似乎都正常,除了我不能再创建新的项目或属性并且我总是得到“无法创建新页面。它已经存在”。错误。
关于如何诊断或修复的任何想法?我在想它试图创建一个“Q1”已经存在的项目“Q1”?任何帮助将非常感激!
我想到了!
感谢此处的第 4 步(https://wikibase.consulting/transferring-wikibase-data-between-wikis/),我发现我是对的,并且 Wikibase 正试图创建一个 Q1 已经存在的 Q1。因此,我只需要将计数器移动到适当的数字即可。
幸运的是,上面的链接可以访问一个可以快速轻松地完成此操作的脚本。您可以使用以下命令将链接下载到 Wikibase 实例的根目录:
curl https://gist.githubusercontent.com/JeroenDeDauw/c86a5ab7e2771301eb506b246f1af7a6/raw/rebuildWikibaseIdCounters.sql -o rebuildWikibaseIdCounters.sql
并执行它:
php maintenance/sql.php rebuildWikibaseIdCounters.sql
超级快速无痛!
(如果由于某种原因不能选择 curl,也可以在此处使用原始脚本:https ://gist.githubusercontent.com/JeroenDeDauw/c86a5ab7e2771301eb506b246f1af7a6/raw/88cdccb1adcdf420d17a3a21296a99f153b95a21/rebuildWikibaseIdCounters.sql )
这是脚本的完整外观:
-- By Jeroen De Dauw / https://Professional.Wiki
-- License: GPL-2.0-or-later
SELECT * FROM /*_*/wb_id_counters;
REPLACE INTO /*_*/wb_id_counters VALUE((SELECT COALESCE(MAX(CAST(SUBSTRING(`page_title`, 2) AS UNSIGNED)), 0) FROM `page` WHERE `page_namespace` = 120), 'wikibase-item');
REPLACE INTO /*_*/wb_id_counters VALUE((SELECT COALESCE(MAX(CAST(SUBSTRING(`page_title`, 2) AS UNSIGNED)), 0) FROM `page` WHERE `page_namespace` = 122), 'wikibase-property');
SELECT * FROM /*_*/wb_id_counters;