Восстановление структуры таблицы в базе данных¶
Восстановление структуры базы данных может понадобится в двух ситуациях.
-
При запуске выдает ошибку и не выполняется восстановление моделей. Веб интерфейс недоступен. Контейнер lxc после сбоя работает и доступен для входа.

-
На работающем воркспейсе в веб интерфейсе вылазит ошибка при попытке восстановить модель из резервной копии.

В обоих случаях мы знаем id нужной модели для дальнейшей работы. id это
последние цифры в имени таблицы из сообщения об ошибке.

Или мы получили от пользователей имя проблемной модели. Тогда id мы узнаем
далее
Warning
Хотя все равно если админка доступна лучше сходить и запустить
восстановление что бы убедится в наличии проблемы. Если подтвердится в
сообщении об ошибке мы увидим id.
Порядок действий¶
Идем в каталог воркспейса в папку container и выполняем вход в него через команду:
Повышаем уровень привилегий до рута
И входим в базу данных
Делаем запрос к базе данных
Нам нужен uid соответствующий id. Или если мы знаем только имя модели мы
получим id и uid

Выходим из mysql
Переходим в каталог \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
И восстановление базы
Warning
здесь 193 это
id таблицы. В новых версиях к нему добавляется
численно буквенный индекс, например corplan_model_848_66fe5f0845c4e
Если при восстановлении получаем ошибку вида:
То заходим в 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и последующий запуск. -
Если веб интерфейс администратора доступен идем в админку. Заходим в модели. Находим нужную по ее имени. И нажимаем
openВ верхнем меню
Backupsнаходим последний по времени и кликнем по его номеру
Далее нажимаем на Restore Model и ждем восстановления модели.
