Author Topic: Порча базы в результате аварийного завершения Миранды  (Read 948 times)

0 Members and 1 Guest are viewing this topic.

Offline Erjo Loksn

  • Newbie
  • *
  • Posts: 23
В настоящее время аварийное завершение Миранды (например, через диспетчер задач или в результате отключения электроэнергии) приводит к очень серьёзной порче базы Миранды, к тому, что Миранда не может снова запуститься. Приходится доставать из бэкапа целую копию базы. Но так было не всегда. Например, вплоть до версии включительно v0.95.12 alpha build #22889 (5402e71b92) ничего подобного не было. Можно было сколько угодно аварийно снимать Миранду - база от этого не страдала. Явно кто-то что-то изменил в коде, что теперь стало вот так. Нельзя ли вернуть обратно? Учтите, версия указана ориентировочно, я провожу обновления вручную и раз в несколько месяцев.
 

Offline dartraiden

Возможно, проблема появилась после очередного обновления libmdbx.
Мы планируем переходить на SQLite, поэтому проще дождаться этого момента, чем искать проблему в коде, который станет неактуальным уже в этом году.

Если нужно завершать Миранду не штатно через интерфейс, существуют такие варианты как CmdLine, через который можно отдавать команду завершения работы или банальный "taskkill /im", который на моей машине никогда не приводил к повреждению, а пользуюсь им я очень часто.

Завершение через диспетчер, вероятно, эквивалентно вызову taskkill с ключом /f (принудительное прихлопывание без шанса дать программе какое-то время на приведение дел в порядок), что не рекомендуется и приводит к известным проблемам (например, NewStory не успевает подчистить временный контакт, если открыты его настройки).
« Last Edit: 08 08 2020, 15:57:51 by dartraiden »
 

Offline ANDRAON

  • Newbie
  • *
  • Posts: 13
самое время заняться починкой базы
Опять сломалась база и скин миранды, восстановление импортом не помогает. Может кому пригодится.
Нашёл 100% рабочий (ручной) способ починки любой базы:
Условие:
должна быть рабочая (во всех "смыслах") резервная копия для импорта через Miranda;
1) Закрыть Miranda NG;
2) Зайти в папку профиля с резервной копией ...\Miranda NG\Profiles\"ВАШ_ПРОФИЛЬ"\AutoBackups;
3) Сделать копию рабочего профиля (обычно записан старым числом в названии) и переименовать его как "ВАШ_ПРОФИЛЬ".dat;
4) Скопировать "ВАШ_ПРОФИЛЬ".dat в папку профиля ...\Miranda NG\Profiles\"ВАШ_ПРОФИЛЬ" с заменой базы (ответив да);
Пояснение: "ВАШ_ПРОФИЛЬ" - название вашего профиля в Miranda (так как вы его назвали изначально при работе с Miranda).