Восстановление структуры базы данных может понадобится в двух ситуациях.
В обоих случаях мы знаем id
нужной модели для дальнейшей работы. id
это последние цифры в имени таблицы из сообщения об ошибке.
Или мы получили от пользователей имя проблемной модели. Тогда id
мы узнаем далее
Хотя все равно если админка доступна лучше сходить и запустить восстановление что бы убедится в наличии проблемы. Если подтвердится в сообщении об ошибке мы увидим
id
.
Идем в каталог воркспейса в папку container
и выполняем вход в него через команду:
vagrant ssh
Повышаем уровень привилегий до рута
sudo su
И входим в базу данных
mysql
Делаем запрос к базе данных
SELECT id,uid,name FROM corplan_main.models;
Нам нужен uid
соответствующий id
. Или если мы знаем только имя модели мы получим id
и uid
Выходим из mysql
quit;
Переходим в каталог \tmp
и создаем временную директорию. Дальнейшие действия будем выполнять там.
cd /tmp
mkdir db_tmp
cd db_tmp
Резервные копии базы данных хранятся в каталоге
/home/optimacros_middlework/.optimacros_middlework/modelBackups/
Далее идет имя каталога которое соответствует uid
модели полученном на предыдущем шаге. Внутри этого каталога лежат архивы резервных копий. Имя архива содержит дату время создания резервных копий.
Выведем список файлов архива отсортированных по времени в обратном порядке
ls -latr /home/optimacros_middlework/.optimacros_middlework/modelBackups/0bd5069efd48cbb612eb139d36eff2e3/
где 0bd5069efd48cbb612eb139d36eff2e3
это uid
модели
Выполняем распаковку найденного архива
/home/optimacros_middlework/.optimacros_middlework/modelBackups/0bd5069efd48cbb612eb139d36eff2e3/2023-05-25_10-26-52_5414.zip
И восстановление базы
mysql corplan_model_193 < /root/tmp_backup_1889_193/dump.sql
здесь 193 это
id
таблицы. В новых версиях к нему добавляется численнобуквенный индекс, например corplan_model_848_66fe5f0845c4e
Если при восстановлении получаем ошибку вида:
`ERROR 1049 (42000): Unknown database 'corplan_model_265_6581f8614b502'`
То заходим в mysql и выполняем там команду:
CREATE DATABASE IF NOT EXISTS corplan_model_848_66fe5f0845c4e DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
После этого повторяем пункт с восстановлением базы.
Если при восстановлении получаем ошибку:
ERROR 1005 (HY000) at line 623: Can't create table `corplan_model_17778_653a42099a735`.`_HIERARCHY` (errno: 121 "Duplicate key on write or update")
То необходимо зайти в mysql выполнить там 2 команды:
DROP DATABASE corplan_model_17778_653a42099a735;
CREATE DATABASE IF NOT EXISTS corplan_model_17778_653a42099a735 DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
После этого повторить восстановление базы
Выходим из контейнера по ctrl + d два раза.
После этого есть два варианта действий.
--force
и последующий запуск.cd /om/workspace-install
./current/install workspace --path /om/workspace1/manifest.json shutdown --force
./current/install workspace --path /om/workspace1/manifest.json up
open
В верхнем меню Backups
находим последний по времени и кликнем по его номеру
Далее нажимаем на Restore Model и ждем восстановления модели.