Mediawiki 自定义命名空间 ID 更改
Mediawiki custom namespaces id change
我目前正在开发一个内部 Mediawiki,我们使用了很多自定义书面扩展。
因为我们不知道,所以为我们自己的扩展和文章定义了自定义命名空间,其 id 小于 3000。
例如:
define('NS_bla', 1100);
$wgExtraNamespaces[NS_bla] = "bla";
define('NS_bla_TALK', 1101);
$wgExtraNamespaces[NS_bla_TALK] = "bla Talk";
我们用几个不同的扩展来做到这一点。现在我们在官方文档 (http://www.mediawiki.org/wiki/Extension_default_namespaces) 上了解到,自定义命名空间 应该使用 3000+ 的 ID。
因此我的问题是:我们如何才能轻松地更改生产实例上命名空间的 ID,而不会弄乱我们当前的数据集?我们如何解决这个问题?我找不到有关 Mediawiki 文档的任何信息。
提前致谢
来自德国的欢呼,
法比安
要回答这个问题,您需要使用新的命名空间 ID 更新页面 table:
http://www.mediawiki.org/wiki/Manual:Using_custom_namespaces#Use_a_database_query
为了适合您的场合,应该是:
UPDATE page
SET page_namespace = 3000
WHERE page_namespace = 1100
您不必替换 page_title,因为这些文章已经在另一个命名空间中。
请记住在尝试此操作之前备份您的数据库。
我目前正在开发一个内部 Mediawiki,我们使用了很多自定义书面扩展。 因为我们不知道,所以为我们自己的扩展和文章定义了自定义命名空间,其 id 小于 3000。
例如:
define('NS_bla', 1100);
$wgExtraNamespaces[NS_bla] = "bla";
define('NS_bla_TALK', 1101);
$wgExtraNamespaces[NS_bla_TALK] = "bla Talk";
我们用几个不同的扩展来做到这一点。现在我们在官方文档 (http://www.mediawiki.org/wiki/Extension_default_namespaces) 上了解到,自定义命名空间 应该使用 3000+ 的 ID。
因此我的问题是:我们如何才能轻松地更改生产实例上命名空间的 ID,而不会弄乱我们当前的数据集?我们如何解决这个问题?我找不到有关 Mediawiki 文档的任何信息。
提前致谢
来自德国的欢呼,
法比安
要回答这个问题,您需要使用新的命名空间 ID 更新页面 table:
http://www.mediawiki.org/wiki/Manual:Using_custom_namespaces#Use_a_database_query
为了适合您的场合,应该是:
UPDATE page
SET page_namespace = 3000
WHERE page_namespace = 1100
您不必替换 page_title,因为这些文章已经在另一个命名空间中。
请记住在尝试此操作之前备份您的数据库。