1

所以我安装了一个 Docker Wikibase 实例并从 WAMP64 Wikibase 实例导入了一个转储。它正确导入,一切似乎都正常,除了我不能再创建新的项目或属性并且我总是得到“无法创建新页面。它已经存在”。错误。

关于如何诊断或修复的任何想法?我在想它试图创建一个“Q1”已经存在的项目“Q1”?任何帮助将非常感激!

4

1 回答 1

1

我想到了!

感谢此处的第 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;
于 2021-03-11T04:37:20.200 回答