Pythonでberkeley dbを開く際の問題
-
05-07-2019 - |
質問
bdtablesを使用してPythonでberkeley dbを開くと問題が発生します。データベースへのアクセスに使用しているライブラリはbdtablesを使用しているため、動作する必要があります。
問題は、開こうとしているdb環境(開くデータベースのコピーを取得した)がバージョン4.4で、libdbがバージョン4.6であるということです。 bsddb.dbtables.bsdTableDB([dbname]、[folder])を使用して次のエラーが表示されます。
(-30972, "DB_VERSION_MISMATCH: Database environment version mismatch -- Program version 4.6 doesn't match environment version 4.4")
ただし、bsddb.btopen([dbname])は機能します。
また、db4.4-util、db4.5-util、db4.6-utilのインストールも試みました。 db4.6_verifyを使用しようとすると、次の結果になります。
db4.6_verify: Program version 4.6 doesn't match environment version 4.4
db4.6_verify: DB_ENV->open: DB_VERSION_MISMATCH: Database environment version mismatchs
db4.4_verifyを実行すると、コンピューターがハングするだけで、何も起こりません。
最後に、データベースでdb4.4_recoverを実行すると動作します。ただし、その後、Pythonで次のエラー「No such file or directory」が表示されます。
解決
回答は" answer"に入れるべきだと思うさまざまな質問リストページで質問に回答があるとマークされているため、質問の補遺としてではなくセクション。私はあなたのためにそれをしますが、あなたもそれをやってみたら、私がそれを削除できるように私の答えにコメントを残してください。
引用"質問で回答":
この質問のすべてを検証し、最終的に問題を解決しました。 「No such file or directory」は、いくつかの__db.XXXファイルが欠落していることが原因です。使用
bsddb.dbtables.bsdTableDB([dbname],[folder], create=1)
db4.4_recoverの後、これらのファイルが作成され、すべてが機能するようになりました。
それでも、それは少しあいまいな問題であり、最初は理解するのが困難でした。しかし、 Berkeley DBファイルをCLIから調べるという質問のおかげで、私は必要なツールを入手しました。誰かが将来同じ問題に遭遇し、stackoverflow.comで終わる場合は、ここに投稿します
他のヒント
くそー、この質問のすべてを検証して、最終的に問題を解決しました。 「No such file or directory」は、いくつかの__db.XXXファイルが欠落していることが原因です。 db4.4_recoverの後にbsddb.dbtables.bsdTableDB([dbname]、[folder]、create = 1)を使用すると、これらのファイルが作成され、すべてが機能するようになりました。
それでも、それは少しあいまいな問題であり、最初は理解するのが困難でした。しかし、CLIからBerkeley DBファイルを調べるという質問のおかげで、必要なツールが手に入りました。誰かが将来同じ問題に遭遇し、stackoverflow.comで終わる場合は、ここに投稿します