ZODB cannot create storage files

12 Views Asked by At

ZODB is failing to find a lock file when I run the following code:

from ZODB.DB import DB
from ZODB.FileStorage import FileStorage
import os

mydir = os.path.dirname(__file__)
myfile = 'data.fs'
data_path = os.path.join(mydir, myfile)


storage = FileStorage(data_path)

db = DB(storage)

conn = db.open()

root = conn.root()

Here is the error:

Traceback (most recent call last):
  File "C:\Program Files\Python312\Lib\site-packages\zc\lockfile\__init__.py", line 84, in __init__
    fp = open(path, 'r+')
         ^^^^^^^^^^^^^^^^
FileNotFoundError: [Errno 2] No such file or directory: 'c:\\Users\\2025a\\Documents\\Code\\Tamagemon\\archive\\origin\\data.fs.lock'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "c:\Users\2025a\Documents\Code\Tamagemon\archive\origin\create.py", line 10, in <module>
    storage = FileStorage(data_path)
              ^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Program Files\Python312\Lib\site-packages\ZODB\FileStorage\FileStorage.py", line 254, in __init__
    self._lock_file = LockFile(file_name + '.lock')
                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Program Files\Python312\Lib\site-packages\zc\lockfile\__init__.py", line 120, in __init__
    super().__init__(path)
  File "C:\Program Files\Python312\Lib\site-packages\zc\lockfile\__init__.py", line 90, in __init__
    fp = open(path, 'a+')
         ^^^^^^^^^^^^^^^^
FileNotFoundError: [Errno 2] No such file or directory: 'c:\\Users\\2025a\\Documents\\Code\\Tamagemon\\archive\\origin\\data.fs.lock'

Not sure why I would need to, but when I create the file manually, I get this error:

Traceback (most recent call last):
  File "c:\Users\2025a\Documents\Code\Tamagemon\archive\origin\create.py", line 9, in <module>
    storage = FileStorage(data_path)
              ^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Program Files\Python312\Lib\site-packages\ZODB\FileStorage\FileStorage.py", line 254, in __init__
    self._lock_file = LockFile(file_name + '.lock')
                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Program Files\Python312\Lib\site-packages\zc\lockfile\__init__.py", line 120, in __init__
    super().__init__(path)
  File "C:\Program Files\Python312\Lib\site-packages\zc\lockfile\__init__.py", line 100, in __init__
    self._on_lock()
  File "C:\Program Files\Python312\Lib\site-packages\zc\lockfile\__init__.py", line 128, in _on_lock
    self._fp.truncate()
OSError: [Errno 9] Bad file descriptor

Does anyone know why this keeps failing?

0

There are 0 best solutions below