문제

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 배포와 함께 제공되는 유틸리티.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top