Ошибка MultipleObjectsReturned при обновлении ПМ 4.3 → 4.4
title: Ошибка MultipleObjectsReturned при обновлении ПМПринтМенеджер 4.3 → 4.4
slug: ts-multipleobjectsreturned-pri-obnovlenii
tags: [обновление, MultipleObjectsReturned, RuleAction, БД, 4.3, 4.4]
domain: Troubleshooting
type: Troubleshooting
audience: partner-engineer
product_versions: "4.3, 4.4"
status: ready
related_components: [ПринтМенеджер]
related_pages:
- kak-obnovit-printum
Ошибка MultipleObjectsReturned при обновлении ПМПринтМенеджер 4.3 → 4.4
Симптомы
Обновление ПМПринтМенеджер с 4.3 на 4.4 завершается ошибкой таймаута. В логах установки:
__fake__.RuleAction.MultipleObjectsReturned:
get() returned more than one RuleAction -- it returned 2!
Система не обновляется, откатывается в предыдущее состояние.
Причина
В таблице print_rules_ruleaction БД ПМПринтМенеджер есть дублирующиеся записи с одинаковым action_type. При миграции на 4.4 скрипт ожидает одну запись — получает две, падает.
Дубли появляются при обновлении с версий 4.2 и ниже. На чистых установках 4.3 не воспроизводится.
Диагностика
Воспроизвести на тестовом стенде не всегда возможно — проблема зависит от истории обновлений конкретного инстанса.
Признак: обновление зависает на этапе миграций ПМ,ПринтМенеджер, затем завершается с таймаутом и ошибкой MultipleObjectsReturned.
Решение
Самостоятельно не устраняется. Требует удаления дублей из БД ПМПринтМенеджер вручную.
Передать в ТП:
- Версии М и
ПМПринтМенеджер до обновления. - Логи установки (
install.logна сервереПМ)ПринтМенеджер). - Подтверждение, что система обновлялась с версий 4.2 или ниже.
ТП предоставит команды для удаления дублей из таблицы print_rules_ruleaction. После этого обновление повторяется стандартным способом.
Как проверить результат
Обновление завершается без ошибок таймаута. В панели администратора ПМПринтМенеджер отображается версия 4.4.x. Правила печати работают корректно.
Когда эскалировать
Сразу — проблема не устраняется без вмешательства в БД.