排除故障

From semantic-mediawiki.org
排除故障
Explains various common problems when running Semantic MediaWiki and how to fix them.
Table of Contents

本页面解释的是各种常见的运行Semantic MediaWiki时的问题及其解决办法。本列表之中未收录的问题可能已被SMW的支持机构解决,或者可能是您所希望上报的软件缺陷。

数据库错误:未知/不存在的数据表[edit]

  • Previewing or storing articles with semantic properties causes database errors.
对带有语义属性的文章的预览或存储引起了数据库错误。

最有可能的情况就是,您的数据库没有进行正确的初始化。有关说明,请参见您的维基站点上的SMW管理员页面Special:SMWAdmin。如果全部失败,当您已经存储了标注的时候,请依次运行维护脚本:

php SMW_refreshData.php -vfp

php SMW_refreshData.php -v

数据错误或不完整[edit]

  • Data has been entered and shows up in the Factbox, but it is not shown when using Special:Browse.
数据已经录入且可以显示在事实框Factbox当中,但在使用语义属性浏览页面Special:Browse时不显示。
  • Semantic queries do not return the expected results.
语义查询不返回预期的结果。

SMW所使用的数据有可能没有与您的维基站点之中的页面内容实现同步。要核对这一点,请编辑一个受影响的页面,然后采用Special:Browse来查看其数据现在是否正确。要自动修复所有的页面,请阅读修复数据和数据结构。如果这不是您遇到的问题,请查看下一项。

自定义命名空间上缺失数据[edit]

  • Data entered on pages in my custom namespace (e.g. "Portal:") is ignored, and queries do not show any pages of my custom namespace.
在我的自定义命名空间(如"Portal:)之中的页面上所录入的数据被忽略,因而查询不显示我的自定义命名空间的任何页面。

请确认$smwgNamespacesWithSemanticLinks之中列出了您的自定义命名空间 详情请阅读SMW_Settings.php。如果这个办法不行,请检查您是否利用$smwgNamespacesWithSemanticLinks,把查询限制到了特定的命名空间。

数据库错误:非法校对规则[edit]

  • When issuing semantic queries, I receive database errors that talk about some "illegal collation". Otherwise storing of annotations seems to work.
当发出语义查询时,我收到若干关于某一"非法校对规则"的数据库错误。在其他情况下,则对标注的存储看上去奏效。

您的MediaWiki和SMW数据库表的生成采用是不同的设置。要修复这个问题,请首先尝试运行维护脚本:

php SMW_refreshData.php -vfp

之后再运行:

php SMW_refreshData.php -v

如果该方法没有奏效,则需要检查您的数据库的校对规则/字符集(collation/character set)设置。

为此,可采用数据库前端工具来完成或执行如下的SQL命令:

SHOW CREATE TABLE tablename;

查看比如数据库表"categorylinks"的校对规则/字符集,并如MySQL手册所述,将您的数据库的默认校对规则/字符集变更为这些设置。最后,再次运行前面所说的那些维护脚本。

非英语语言失败[edit]

  • In my non-English installation, properties don't work even when I follow the examples.
"在我的非英语安装里,属性都不起作用,即便是我依照那些示例来做。"

尽管SMW通常提供英文别名,您也可能需要对特殊属性和命名空间使用本地化名称。对于每种语言,翻译后的字符串和别名位于语言(languages)子目录当中。

在LocalSettings.php之中添加如下设置语句可能会起作用:

setlocale( LC_ALL, "en_US.UTF-8" );

页面空白或不完整[edit]

  • After installing SMW, some or all pages are not displayed at all, or just incompletely.
"在安装SMW之后,某些或所有页面根本不显示,或者只是不完整。"

这通常是因为某些网站上的限制性的内存默认设置所造成的,而并不是直接由SMW所造成的(任何额外的扩展代码都可能会造成这个问题)。在LocalSettings.php之中,取消对如下行的注释,并可能要按照您的需求调整其中的取值:

ini_set( 'memory_limit', '20M' );

大于100M几乎没什么用处,但对于某些情况下的大型页面,可能会需要50M左右的数值。

大型查询无明显原因中断[edit]

  • In case I try to run queries with a lot of printout statements (> 7) Special page "Ask" abandons the entries I have made.
"当我试图运行带有大量打印输出语句的查询时(> 7),语义搜索页面Special page "Ask"会抛弃我已经完成的那些条目。"

最为可能的情况就是,当前您的工作环境采用的是Suhosin,仅仅支持较小的URL长度限值。这就意味着,当某个URL超过该限值的情况下,就会对该请求进行分拆,从而造成查询故障。要解决该问题,必须在您的服务器上的文件php.ini当中,把变量"suhosin.get.max_value_length"的取值设为1024或更大的数值。