Shelve: No locks available

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
h_e_i_k_o

Hallo,

ich spiele gerade mit Shelve rum, komme allerdings nicht weit, da Python bei dem Versuch, ein Datenbankobjekt anzulegen, folgenden Fehler bringt:

Code: Alles auswählen

>>> import shelve
>>> f = shelve.open('foo', 'c')
Traceback (most recent call last):
  File "<stdin>", line 1, in ?
  File "/usr/lib/python2.2/shelve.py", line 158, in open
    return DbfilenameShelf(filename, flag)
  File "/usr/lib/python2.2/shelve.py", line 148, in __init__
    Shelf.__init__(self, anydbm.open(filename, flag))
  File "/usr/lib/python2.2/anydbm.py", line 86, in open
    return mod.open(file, flag, mode)
dbm.error: (37, 'No locks available')
Was geht da schief?

Danke und Gruß,
Heiko
Milan
User
Beiträge: 1078
Registriert: Mittwoch 16. Oktober 2002, 20:52

Das mit Shelve ist so eine Sache... Shelve wird mit Hilfe von Pickle und anydbm realisiert, wobei anydbm irgendwein auf dem system verfügbares dbm ist. Hier ist das Bildungsflag nicht immer "c", sondern manchmal auch "n". Nach der Erstellung kann eine shelve-Datenbank immer mit "r" oder "w" geöffnet werden. Probier also mal das (Python versucht dann intern alle Möglichkeiten zur Bildung)

Code: Alles auswählen

f = shelve.open('foo')
h_e_i_k_o

das hatte ich vorher auch schon probiert :-)
ich hab schon alles versucht: ohne bildungsflag, mit 'c' und mit 'n'.
der fehler ist immer der gleiche.
ich vermute fast, dass da auf betriebssystem-ebene (suse 8.2) was nicht stimmt, z.b. irgendwelche schreibrechte

heiko
h_e_i_k_o

ok, der vollständigkeit halber:
es liegt am nfs-server. der ist im moment so konfiguriert, dass file-locks abgeschaltet sind.
ist also kein python-spezifisches problem.

gruß, heiko
Antworten