Что делать, если во время обновления Ministra TV Platform до версии 5.6 Вы получаете сообщение Migrations run failed?
Во время обновления Ministra TV Platform до версии 5.6 Вы можете столкнуться с ошибкой Migrations run failed при выполнении команды phing:
BUILD FAILED /var/www/stalker_portal/deploy/build.xml:357:12: /var/www/stalker_portal/deploy/build.xml:363:51: Migrations run failed
Такое поведение может быть связано с:
- Ручным изменением структуры базы данных stalker_db
или
- Наличием в таблице stb_in_group записей с одинаковыми идентификаторами пользователя (uid). В таком случае в отчете выполнения команды phing Вы обнаружите среди результатов выполнения Ministra DB Migrations запросов только одну ошибку:
CREATE UNIQUE INDEX uid_idx ON stb_in_group (uid) Migration 20190805112404 failed during Execution. Error An exception occurred while executing 'CREATE UNIQUE INDEX uid_idx ON stb_in_group (uid)
В предыдущих версиях портала дубликаты записей возникали при перемещении Пользователя из одной группы пользователей в другую.
В ходе перемещения создавалась новая запись в таблице stb_in_group, при этом старая не удалялась. Таким образом, происходило создание копии Пользователя в той же или другой группе.
Для исправления ошибки с дублями необходимо:
- Вручную удалить лишние дубликаты в таблице stb_in_group, таким образом, чтобы столбец uid содержал только уникальные значения. В случае наличия более чем одной записи с одним uid (даже в разных группах) - нужно оставить только одну запись
или
- Воспользоваться скриптом для очистки таблицы, предложенным ниже.
Обратите внимание! Перед тем как выполнять удаление записей вручную убедитесь, что пользователь принадлежит нужной группе.
Пожалуйста, перед выполнением каких-либо манипуляций с базой данных сделайте резервное копирование таблицы stb_in_group базы данных stalker_db:
mysqldump -u stalker -p1 stalker_db stb_in_group > /opt/stb_in_group_backup.sql
После выполнения скрипта дубликаты записей с одинаковыми uid будут удалены из таблицы stb_in_group. При этом записи, у которых id больше, чем у дубликата сохранятся.
wget -O /opt/fix_duplicates_stb_in_group.sql https://wiki.infomir.eu/wiki/ru:article/files/133049883/133049884/1/1565177040791/fix_duplicates_stb_in_group.sql
2. Выполните следующую команду:
mysql -u stalker -p1 stalker_db < /opt/fix_duplicates_stb_in_group.sql
где stalker - имя пользователя БД, параметр mysql_user в custom.ini (config.ini);
1 - пароль пользователя базы данных, параметр mysql_pass в custom.ini (config.ini);
stalker_db - имя базы данных Ministra TV Platform, параметр db_name в custom.ini (config.ini);
fix_duplicates_stb_in_group.sql - файл с исправлением.