BDB를 읽을 때 BDB Python 인터페이스 오류
-
20-09-2019 - |
문제
bsddb.db.dbinvalidargerror : (22, '유효하지 않은 인수 - /dbs/supermodels.db : 예기치 않은 파일 유형 또는 형식'))
이 오류는 호환되지 않는 BDB 버전 (1.85 또는 3+)의 결과입니까? 그렇다면 버전을 확인하고 문제를 해결 하고이 오류를 해결하려면 어떻게해야합니까?
해결책
예, 이것은 확실히 DB 파일의 이전 버전 때문일 수 있지만이 예외와 전체 트레이스 백을 생성 한 코드를 게시하면 도움이 될 것입니다.
이에 없으면 열린 데이터베이스 파일이 올바른 유형인지 확실합니까? 예를 들어, 해시 인 것처럼 btree 파일을 열려고 시도하면 다음과 같은 예외가 발생합니다.
>>> import bsddb
>>> bt = bsddb.btopen('bt')
>>> bt.close()
>>> bsddb.hashopen('bt')
Traceback (most recent call last):
File "<stdin>", line 1, in ?
File "/usr/lib/python2.4/bsddb/__init__.py", line 298, in hashopen
d.open(file, db.DB_HASH, flags, mode)
bsddb.db.DBInvalidArgError: (22, 'Invalid argument -- ./bt: unexpected file type or format')
*nix에서 일반적으로 사용하여 DB 유형을 결정할 수 있습니다. file
명령, 예를 들어
$ file /etc/aliases.db cert8.db
/etc/aliases.db: Berkeley DB (Hash, version 8, native byte-order)
cert8.db: Berkeley DB 1.85 (Hash, version 2, native byte-order)
1.85 버전 파일 열기는 동일한 예외로 실패합니다.
>>> db = bsddb.hashopen('/etc/aliases.db') # works, but...
>>> db = bsddb.hashopen('cert8.db')
Traceback (most recent call last):
File "<stdin>", line 1, in ?
File "/usr/lib/python2.4/bsddb/__init__.py", line 298, in hashopen
d.open(file, db.DB_HASH, flags, mode)
bsddb.db.DBInvalidArgError: (22, 'Invalid argument -- ./cert8.db: unexpected file type or format')
데이터베이스 파일을 마이그레이션 해야하는 경우 db_dump
, db_dump185
그리고 db_load
BDB 배포와 함께 제공되는 유틸리티.
제휴하지 않습니다 StackOverflow