我正在用Apache,PHP和Postgresql-9.0在Gentoo Linux机器上运行私人mediawiki服务器。 有时当我们其中一个人试图上传一个PDF文件(这是我见过的唯一的types),我们得到的错误:
MediaWiki内部错误。
原始exception:exception'DBUnexpectedError'带有消息'已发生数据库错误查询:UPDATE image SET img_size ='1129473',img_width ='1287',img_height ='1789',img_bits ='0',img_media_type ='OFFICE', img_major_mime ='application',img_minor_mime ='pdf',img_timestamp ='2011-08-31 16:39:11 GMT',img_description ='',img_user ='1',img_user_text ='Dynamphorous',img_metadata ='a: 15:{S:5: “标题”; S:0: “”; S:7: “主题”; S:0: “”,S:8: “关键字”; S:0: “”,S: 6:“作者”; s:0:“”; s:8:“Producer”; s:20:“Pdf-It version 1.410”; s:12:“CreationDate”; s:24:“Thu Jul 27 10 :10:25 2000“; s:7:”ModDate“; s:24:”Tue Apr 24 06:38:25 2001“; s:6:”Tagged“; s:2:”no“; s:5 : “页数”,S:2: “12”; S:9: “encryption”,S:2: “否”; S:5: “页”;一个:12:{I:1;一个:1: {s:9:“Page size”; s:13:“618 x 859 pts”;} i:2; a:1:{s:9:“Page size”; s:13:“618 x 859 pts” ;} i:3; a:1:{s:9:“Page size”; s:13:“619 x 859 pts”;} i:4; a:1:{s:9:“Page size”; s:13:“619 x 859 pts”;} i:5; a:1:{s:9:“Page size”; s:13:“616 x 859 pts”;} i:6; a: {s:9:“Page size”; s:13:“616 x 859 pts”;} i:7; a :1:{s:9:“Page size”; s:13:“615 x 859 pts”;} i:8; a:1:{s:9:“Page size”; s:13:615 x 859分“;} i:9; a:1:{s:9:”Page size“; s:13:”616 x 859 pts“;} i:10; a:1:{s:9:大小“; s:13:”615 x 859 pts“;} i:11; a:1:{s:9:”Page size“; s:13:”617 x 859 pts“;} i:12 a :1:{s:9:“Page size”; s:13:“617 x 859 pts”;}} s:9:“文件大小”; s:13:“1129473 bytes”; s:9: “; s:2:”不“; s:11:”PDF版本“; s:3:”1.3“; s:4:”文本“; a:13:{i:0; s:3527:
全文的文件我正在尝试上传到这里
“; i:12; s:0:”“;}}',img_sha1 ='5y3nidgq6von7yjlalvi776tjs8pjbz'WHERE img_name ='title.pdf'function:LocalFile :: recordUpload2错误:1错误:types为bytea的无效input语法LINE 1:…'1',img_user_text ='Dynamphorous',img_metadata ='a:15:{s:5 … ^'in /var/www/localhost/htdocs/includes/db/DatabasePostgres.php:1122堆栈跟踪:0 /var/www/localhost/htdocs/includes/db/Database.php(538):DatabasePostgres-> reportQueryError('错误:无效…',1,'更新图像S …',' LocalFile :: reco …',false)1 /var/www/localhost/htdocs/includes/db/Database.php(1212):DatabaseBase-> query('UPDATE image S …','LocalFile :: …)2 /var/www/localhost/htdocs/includes/filerepo/LocalFile.php(891): DatabaseBase-> update('image',Array,Array,'LocalFile :: reco …') 3 /var/www/localhost/htdocs/includes/filerepo/LocalFile.php(758):LocalFile-> recordUpload2('20110831170017!…','','',Array,false,Object(User))4 /var/www/localhost/htdocs/includes/upload/UploadBase.php(391):LocalFile-> uploa d('/ tmp / phpMxnvZ5','','',1,Array,false,Object(User))5 /var/www/localhost/htdocs/includes/specials/SpecialUpload.php(426):UploadBase-> (上传/下载/上传/下载)(7)/ var / www / localhost / htdocs / includes / SpecialPage.php(559):SpecialUpload-> execute(NULL)8 /var/www/localhost/htdocs/includes/Wiki.php(254):SpecialPage :: executePath(Object(Title))9 / var /www/localhost/htdocs/includes/Wiki.php(64):MediaWiki-> handleSpecialCases(Object(Title),Object(OutputPage),Object(WebRequest))10 /var/www/localhost/htdocs/index.php( 117):MediaWiki-> performRequestForTitle(Object(Title),NULL,Object(OutputPage),Object(User),Object(WebRequest))11 {main}
在exception处理程序中捕获exception:在/var/www/localhost/htdocs/includes/db/DatabasePostgres.php:624中发生消息“SQL错误:错误:当前事务中止,命令被忽略,直到事务结束结束”的exception'DBUnexpectedError'堆栈跟踪:
0 /var/www/localhost/htdocs/includes/Interwiki.php(153):DatabasePostgres-> fetchRow(false)1 /var/www/localhost/htdocs/includes/Interwiki.php(57):Interwiki :: load( 'engineering')2 /var/www/localhost/htdocs/includes/Interwiki.php(34):Interwiki :: fetch('Engineering')3 /var/www/localhost/htdocs/includes/Title.php(2325) :Interwiki :: isValidInterwiki('Engineering')4 /var/www/localhost/htdocs/includes/Title.php(131):Title-> secureAndSplit()5 /var/www/localhost/htdocs/includes/Skin.php (2132):标题:: newFromText('Engineering:El …')6 /var/www/localhost/htdocs/includes/Skin.php(2085):Skin-> addToSidebar(Array,'sidebar')7 / var / www / localhost / htdocs / includes / SkinTemplate.php(493):Skin-> buildSidebar()8 /var/www/localhost/htdocs/includes/OutputPage.php(1615):SkinTemplate-> outputPage(Object(OutputPage ))9 /var/www/localhost/htdocs/includes/Exception.php(164):OutputPage-> output()10 /var/www/localhost/htdocs/includes/Exception.php(191):MWException-> reportHTML ()11 / var / www / localhost / htdocs / 包含/ Exception.php(289):MWException-> report()12 /var/www/localhost/htdocs/includes/Exception.php(348):wfReportException(Object(DBUnexpectedError))13 [内部函数]:wfExceptionHandler(Object (DBUnexpectedError))14 {main}
然后继续从PDF中提供所有的元数据。 (通常是文件的全文)
我知道的几件事情不是:不是MIME文件types的黑名单问题,我们一直上传PDF。 这也不是一个PHP上传大小的限制(这个错误正在被抛出的PDF只有1.1MB,即使在此之前,也有大量的file upload)
有谁知道这里的问题可能是什么? 我不认为它是一个encryption的PDF问题或任何愚蠢的东西。 而且这似乎只发生在具有元数据的PDF中,比如完整的OCR文本。 在此先感谢任何可以帮助的人。
如上所述,Mediawiki只在DB中存储元数据(作为序列化数组),将文件内容写入本地文件系统
这似乎是Mediawiki中的一个错误,它在处理过大的元数据时会导致中断,这可能是因为它不正确地将整个文件内容parsing为元数据,或者因为即使“正确的”元数据太多也无法处理。 由于您发布的错误包含整个PDF内容在UPDATE查询中,所以我正在使用后者。
我build议在当前的MW版本的干净安装上尝试使用相同的PDF文件,以确认是否可能是您现有的configuration设置或扩展之一是原因; 然后在当前版本(或1.18.0testing版)上再次尝试,看它是否仍然存在。