Я запускаю частный сервер mediawiki в системе Gentoo Linux с Apache, PHP и Postgresql-9.0. Иногда, когда кто-то из нас пытается загрузить файл PDF (это единственный тип, который я когда-либо видел), мы получаем ошибку:
Внутренняя ошибка MediaWiki.
Исходное исключение: исключение 'DBUnexpectedError' с сообщением 'Произошла ошибка базы данных Запрос: ОБНОВИТЬ изображение 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: "Производитель"; s: 20: "Pdf-It версия 1.410"; s: 12: "CreationDate"; s: 24: "Чт, 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: «Зашифровано»; s: 2: «нет»; s: 5: «страницы»; a: 12: {i: 1; a: 1: {s: 9: "Размер страницы"; s: 13: "618 x 859 пунктов";} i: 2; a: 1: {s: 9: "Размер страницы"; s: 13: "618 x 859 пунктов" ;} i: 3; a: 1: {s: 9: "Размер страницы"; s: 13: "619 x 859 точек";} i: 4; a: 1: {s: 9: "Размер страницы"; s: 13: «619 x 859 точек»;} i: 5; a: 1: {s: 9: «Размер страницы»; s: 13: «616 x 859 точек»;} i: 6; a: 1: {s: 9: "Размер страницы"; s: 13: "616 x 859 точек";} i: 7; a : 1: {s: 9: "Размер страницы"; s: 13: "615 x 859 точек";} i: 8; a: 1: {s: 9: "Размер страницы"; s: 13: "615 x 859 pts ";} i: 9; a: 1: {s: 9:" Размер страницы "; s: 13:" 616 x 859 pts ";} i: 10; a: 1: {s: 9:" Page size "; s: 13:" 615 x 859 точек ";} i: 11; a: 1: {s: 9:" Размер страницы "; s: 13:" 617 x 859 точек ";} i: 12; a : 1: {s: 9: "Размер страницы"; s: 13: "617 x 859 точек";}} s: 9: "Размер файла"; s: 13: "1129473 байта"; s: 9: "Оптимизировано "; s: 2:" no "; 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 of paper.pdf 'Функция: LocalFile :: recordUpload2 Ошибка: 1 ОШИБКА: неверный синтаксис ввода для типа bytea LINE 1: ... '1', img_user_text = 'Dynamphorous', img_metadata = 'a: 15: {s: 5 ... ^' в /var/www/localhost/htdocs/includes/db/DatabasePostgres.php:1122 Трассировка стека: 0 /var/www/localhost/htdocs/includes/db/Database.php(538): DatabasePostgres-> reportQueryError ('ERROR: invalid ...', 1, 'UPDATE image S ...', ' LocalFile :: reco ... ', false) 1 /var/www/localhost/htdocs/includes/db/Database.php(1212): DatabaseBase-> query (' ОБНОВЛЕНИЕ изображения S ... ',' LocalFile :: reco ... ') 2 /var/www/localhost/htdocs/includes/filerepo/LocalFile.php(891): DatabaseBase-> update (' изображение ', Массив, Массив,' LocalFile :: reco ... ') 3 /var/www/localhost/htdocs/includes/filerepo/LocalFile.php(758): LocalFile-> recordUpload2 ('20110831170017! ...', '', '', Массив, false, Объект (Пользователь)) 4 /var/www/localhost/htdocs/includes/upload/UploadBase.php(391): LocalFile-> uploa d ('/ tmp / phpMxnvZ5', '', '', 1, массив, false, объект (пользователь)) 5 /var/www/localhost/htdocs/includes/specials/SpecialUpload.php(426): UploadBase-> PerformUpload ('', '', false, Object (User)) 6 /var/www/localhost/htdocs/includes/specials/SpecialUpload.php(167): SpecialUpload-> processUpload () 7 / var / www / localhost / htdocs / includes / SpecialPage.php (559): SpecialUpload-> выполнить (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 (Объект (Заголовок), Объект (OutputPage), Объект (WebRequest)) 10 /var/www/localhost/htdocs/index.php ( 117): MediaWiki-> performRequestForTitle (Object (Название), NULL, Object (OutputPage), Object (User), Object (WebRequest)) 11 {main}
Исключение обнаружено внутри обработчика исключений: исключение DBUnexpectedError с сообщением «Ошибка SQL: ОШИБКА: текущая транзакция прервана, команды игнорируются до конца блока транзакции» в /var/www/localhost/htdocs/includes/db/DatabasePostgres.php:624 Трассировки стека:
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 («Разработка») 4 /var/www/localhost/htdocs/includes/Title.php(131): Title-> secureAndSplit () 5 /var/www/localhost/htdocs/includes/Skin.php (2132): Title :: newFromText ('Engineering: El ...') 6 /var/www/localhost/htdocs/includes/Skin.php(2085): Skin-> addToSidebar (Массив, 'боковая панель') 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, мы постоянно загружаем PDF-файлы. Это также не ограничение размера загрузки PHP (PDF-файл, в котором сейчас возникает эта ошибка, составляет всего 1,1 МБ, а файлы значительно большего размера загружены даже непосредственно перед этим)
Кто-нибудь знает, в чем может быть проблема? Я не думаю, что это проблема с зашифрованным PDF-файлом или что-то в этом роде. И это только кажется, что происходит с PDF-документами, у которых есть метаданные, такие как полный текст OCR. Заранее благодарим всех, кто может с этим помочь.
Как уже говорилось, Mediawiki хранит только метаданные в БД (в виде сериализованного массива), записывая содержимое файла в локальную файловую систему.
Похоже, это ошибка в Mediawiki, которая приводит к его сбою при обработке слишком больших метаданных либо потому, что он неправильно анализирует все содержимое файла как метаданные, либо потому, что даже «правильные» метаданные слишком велики для его обработки. Я полагаюсь на последнее, поскольку опубликованная вами ошибка содержала все содержимое PDF в запросе UPDATE.
Я бы рекомендовал попробовать тот же PDF-файл при чистой установке вашего текущего выпуска MW, чтобы убедиться, что, возможно, причиной является один из ваших существующих параметров конфигурации или расширений; затем попробуйте еще раз в текущем выпуске (или бета-версии 1.18.0), чтобы убедиться, что он все еще там.