При продаже товара выскакивает критическая ошибка «Ошибка работы с базой! Internal gds software consistency check (can’t continue after bugcheck)» и работа базы прекращается, любые повторные попытки войти в базу приводят к огромным количествам не понятных ошибок, сбоев, зависаний и вообще может выдать что база не обнаружена (перемещена или удалена). При попытка остановить/перезапустить службу Frontol она вообще зависала и помогала только перезагрузка терминала
В один прекрасный день произошло зависание ПК где был установлен Atol Frontol 6.1.0 , после загрузки и входа в режим продажи посыпалось больше количество ошибок и база отказалась напрочь работать….. магазин встал…. Любые попытки зависти базу не увенчались успехом и были готовы к тому, что все данные потерянны и придется все настраивать по новой, пришло понимание что БД убита.
Копии БД делались, но как восстановить из копии не кто внятно сказать не мог, интернет отправлял с одного форума на другой где было десятки команд и в каком порядке, что куда вводить не ясно, кто то вообще утверждал что бэкапы Frontol служат не для полного восстановления БД, а для частичного, если какие то данные утеряны но база работает, не ясно тогда вообще зачем нужны такие бэкапы (вообщем вопросов становилось все больше).
Простое решение восстановление БД Frontol которое помогает решить проблему в большинстве случаев, любому системному администратору.
Полное описание команд и их параметров можно найти на сайте: https://www.ibase.ru/gbak
ВАЖНО!! Этот метод работает даже если бэкапы не когда не делались.
Мы будет тестировать убитую базу на ошибки, исправлять эти ошибки и после исправлений записывать уже без ошибок в новую копию этой базы.
Рабочее место кассира: Windows 10 x64, Frontol v. 6.1.0 Торговля.Стандарт.
Исправление ошибок с Базой Frontol 6
1. Подготовка:
Прежде чем начать манипуляции с базой надо остановить службу FrontolService, иначе он просто не даст ничего с ней делать (она будет заблокирована для каких либо действий).
После остановки службы переходим в каталог с базой, в нашем случае «C:\DB\» (если не знаете где его найти ищите по имени фалов базы), там лежат два файла БД: log.mdb и main.mdb. Из этих файлов нам нужен — main.mdb это файл самой базы данных.
ВАЖНО! Обязательно делаем копию этих файлов и папок. И все делаем на копии!
Для упрощения написания команд файл базы данных main.mdb рекомендуется перенести в папку с утилитами по исправлению базы данных (иначе придется всегда прописывать длинный путь к утилитам): C:\Program Files (x86)\FireBird\FireBird_2_1\Bin.
Открываем командную строку под Администратором и начинаем и переходим в исправлению ошибок.
2. Исправление ошибок базы данных Frontol
Переходим в папку с утилитами: «cd C:\Program Files (x86)\FireBird\FireBird_2_1\Bin», если возникли трудности по работе с командной строкой команды можно легко найти в интернете (cd.. — назад, D: — смена диска).
в итоге у вас должно получиться такое окно.
Важно! Пользователь и пароль для базы Frontol по умолчанию SYSDBA и masterkey. Его не рекомендуется менять.
Проверяем базу данных на ошибки, введя команду:
gfix -v -full -user SYSDBA -pas masterkey main.gdb
Если после проверки утилитой на экран ничего не вывелось значит с базой все нормально и она рабочая, в нашем случаю было иначе:
Пытаем исправить ошибки командой:
gfix -mend -full -ignore -user SYSDBA -pas masterkey main.gdb
Бывает, что помогает и ошибки уходят совсем либо их становится меньше, либо же утилита выдаст такое же окно с таким же количеством ошибок как на скрине выше. Если это не помогла идем дальше.
Запишем базу в новый Bak-файл, а потом восстановим из этого Bak-файл в другой новой базе данных на смену битой.
Для записи базы в Bak-файл выполняем команду:
gbak -b -v -ig -g -user SYSDBA -pas masterkey main.gdb database.gbk
Если первый вариант команды не сработал пишем с указанием полных параметров сервера где расположена база:
gbak -b -v -ig -g -user SYSDBA -pas masterkey server:database.gdb database.gbk
Краткое описание параметров gbak:
-b — создать архивную копию базы.
-v — выводить на экран подробный лог (не обязательный).
-ig — игнорировать ошибки в данных.
-g — запретить сборку мусора при чтении из базы.
После выполнения команды будет создан Bak-файл, где будут очищены или перезаписаны все ошибки и битые записи (возможна частичная потеря записей но не всегда). Выполнение займет какое то время.
После выполнения команды будет сообщение о завершении «closing file, committing, and finishing».
Заключительный шаг, необходимо из созданного Bak-файл восстановить всю информацию в новую базу данных, которая в дальнейшем и станет рабочей.
Для восстановления выполняем команду:
gbak -c -v -user SYSDBA -pas masterkey database.gbk main_new.gdb
Если первый вариант команды не сработал пишем с указанием полных параметров сервера где расположена база:
gbak -c -v -user SYSDBA -pas masterkey database.gbk server:main_new.gdb
где main_new.gdb — это имя новой базы, выполнение команды занимает продолжительное время в зависимости от размера базы.
После выполнения команды будет сообщение о завершении «finishing, closing, and going gome».
После этого в каталоге в котором мы работали «C:\Program Files (x86)\FireBird\FireBird_2_1\Bin» должна появиться новая база Frontol с исправленными ошибками main_new.gdb.
3. Завершение и запуск
После всех проделанных команд готовый файл базы данных main_new.gdb копируем в папку где располагалась база в нашем случае «C:\DB\», старый файл MAIN.gdb можно переименовать, а новый необходимо назвать его именем. Лог файл можно оставить без изменений.
Запускаем службу FrontolService, либо перегружаем ПК.
Все должно работать. Frontol должен запуститься в штатном режиме все настройки должны быть сохранены, товары, скидки, продажи и т.д.