[ZODB-Dev] FileStorage database unrecoverable?
Greg Czajkowski
gregczajkowski@yahoo.com
Mon, 24 Mar 2003 13:53:10 -0800 (PST)
Hi all, I would appreciate any help.
my database grew over 2GB on NT causing it to become
corrupted. I am running ZODB 3.1.1 on NT.
ZODB.FileStorage.packed_version = 'FS21'
I am using FileStorage because it packs python
strings,lists,dict,ints in the least amount of space.
How can I prevent issues when my database grows larger
than 2GB with the ZEO client/server dying? Should I
use DirectoryStorage instead? Does it pack the data
just as efficiently?
Also any way to recover my data?
Committing, packing and fsrecovering all fail:
Commit
-------------------------------------
get_transaction().commit()
File "C:\Python21\ZODB\Transaction.py", line 246, in
commit
vote(self)
File "C:\Python21\ZODB\Connection.py", line 631, in
tpc_vote
s = vote(transaction)
File "C:\Python21\ZEO\ClientStorage.py", line 599,
in tpc_vote
self._server.vote(self._serial)
File "C:\Python21\ZEO\ServerStub.py", line 82, in
vote
return self.rpc.call('vote', trans_id)
File "C:\Python21\ZEO\zrpc\connection.py", line 330,
in call
raise inst # error raised by server
OverflowError: long int too large to convert
Loading the storage fails:
------------------------------------------
storages = {'1' :
FileStorage(r"C:\ZODB_BACKUP\data.fs")}
Traceback (most recent call last):
File "<interactive input>", line 1, in ?
File "C:\Python21\ZODB\FileStorage.py", line 272, in
__init__
r = self._restore_index()
File "C:\Python21\ZODB\FileStorage.py", line 473, in
_restore_index
tid=self._sane(index, pos)
File "C:\Python21\ZODB\FileStorage.py", line 374, in
_sane
if file.tell() < pos:
IOError: (0, 'Error')
packing error:
fsrecover also doesn't work:
-------------------------------
C:\ZODB_BACKUP>python C:\Python21\ZODB\fsrecover.py
data.fs data.fs.new
Recovering data.fs into data.fs.new
Traceback (most recent call last):
File "C:\Python21\ZODB\fsrecover.py", line 329, in ?
if __name__=='__main__': recover()
File "C:\Python21\ZODB\fsrecover.py", line 223, in
recover
file_size=file.tell()
IOError: (0, 'Error')
Regards,
--Greg
__________________________________________________
Do you Yahoo!?
Yahoo! Platinum - Watch CBS' NCAA March Madness, live on your desktop!
http://platinum.yahoo.com