berkeley dbのドキュメントには、理由は次のように記載されています。
無効なフラグ値またはパラメーターが指定されました(たとえば、不明なデータベースタイプ、ページサイズ、ハッシュ関数、パッドバイト、バイト順序)、または指定されたデータベースと互換性のないフラグ値またはパラメーター。DB_THREADフラグが指定されており、このアーキテクチャーでは高速ミューテックスを使用できません。
DB_THREADフラグはDB->openに指定されましたが、DBハンドルが作成された環境のDB_ENV->open呼び出しには指定されませんでした。
バッキングフラットテキストファイルがDB_THREADフラグで指定されたか、提供されたデータベース環境がトランザクション処理をサポートしています。
私が使用する唯一のフラグはDB_CREATEであり、データベースタイプはDB_BTREEです。
EINVALにつながる正確な理由を知りたいのですが、「DB」構造内で役立つ冗長構成が見つかりませんでした(DB_ENVではset_verboseメソッドがありますが、DB_ENVは使用していません)。