2016-11-11 8 views
0

Я пишу здесь, потому что у меня есть проблема с Mnesia, в частности, кажется, что когда я запускаю свой узел, и я запускаю процедуру для инициализации базы данных (она делает таблицу и popultes их), одна таблица повреждена. Эта таблица не имеет особых опций и является disk_only_copy.Erlang 13B04: Mnesia пишет развращает таблицу

Инициализация выполнена с помощью простой транзакции в функции, используемой списками: foldl.

Я уже пытаюсь сделать все в оболочке Erlang и все работает, транзакция и запись записи возвращают потативный результат, поэтому сбоев кода нет.

Я уже сделал поиск, но нет четкого ответа на эту проблему: кто-то говорит, что он должен использовать транзакцию (выполненную, но любое изменение), в таблице записывается память (это не потому что, если я все делаю в оболочке, все работает), так что же может быть?

Спасибо всем за помощь.

ответ

1

В таблице disk_only_copies используются файлы dets для хранения, а в очень старой версии, например 13B04, некоторые ошибки в dets, возможно, не были исправлены. Попробуйте запустить тот же код в более новой версии (по крайней мере, R15B03-1) и посмотреть, произойдет ли одно и то же.

+0

Спасибо за ответ. Я знаю, что это старая версия, но теперь у меня нет времени сделать перенос на более новую версию. Но если нет другого решения, я должен найти время для этого. Возможно ли, что у меня есть эта проблема только с этой таблицей, а остальные работают нормально? – Mat

+0

Да, это возможно. Было бы просто создать минимальную версию вашего кода запуска, которая имеет только одну таблицу, но по-прежнему показывает ту же проблему с коррупцией? Затем вы можете попробовать это на разных выпусках OTP. – RichardC

 Смежные вопросы

  • Нет связанных вопросов^_^