Seite 1 von 1

Shelve: No locks available

Verfasst: Montag 1. September 2003, 10:21
von 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

Verfasst: Montag 1. September 2003, 10:55
von Milan
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')

Verfasst: Montag 1. September 2003, 11:27
von 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

Verfasst: Dienstag 9. September 2003, 15:20
von 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