Как определить точную причину, почему Berkeley db возвращает EINVAL при db->open?

В документации Беркли БД указано, что причины могут быть следующими:

Указано недопустимое значение флага или параметр (например, неизвестный тип базы данных, размер страницы, хэш-функция, байт заполнения, порядок байтов) или значение или параметр флага, который несовместим с указанной базой данных. Указан флаг DB_THREAD, и быстрые мьютексы недоступны для этой архитектуры.

Флаг DB_THREAD был указан для DB->open, но не был указан для вызова DB_ENV->open для среды, в которой был создан дескриптор DB.

Резервный текстовый файл задан либо с флагом DB_THREAD, либо предоставленная среда базы данных поддерживает обработку транзакций.

Единственный флаг, который я использую, это DB_CREATE, тип базы данных - DB_BTREE.

Я хочу знать точную причину, которая приводит к EINVAL, но я не нашел никакой конфигурации многословия, которая могла бы помочь мне в структуре "DB" (в DB_ENV у них есть метод set_verbose, но я не использую DB_ENV).

1 ответ

Вы можете попробовать DB->err() и эти примеры. Если я правильно помню, там была переменная окружения (переменная окружения оболочки вы можете export X=Y) можно установить, и библиотека начнет печатать сообщения об ошибках в stderr, но, возможно, это была проблема с DB Env... извините, сейчас не могу найти информацию.

Другие вопросы по тегам