problemas sqlite y modpython
Ernesto Revilla
erny en sicem.biz
Mie Nov 2 13:34:09 CET 2005
sqlite crea un archivo temporal para realizar las operaciones que
finalmente se fusionarán con los datos.
¿Has mirado si el directorio tiene los derechos necesarios para crear
ese archivo temporal? (w)
Intenta trabajar sobre un directorio que pertenezca a www-data.
Erny
zako wrote:
> --- Cesar Cardenas Desales <cescd en yahoo.com.mx>
>escribió:
>
>
>
>>Según lo que se ve:
>>
>>
>>
>>>DatabaseError: unable to open database file
>>>
>>>
>>Parece ser que
>>
>>a) No encuentra el archivo
>>
>>
>
>En teoria creo que si que lo encuentra porque he
>probado a modificar la ruta del archivo en el
>"connect" a la base de datos y entonces la excepcion
>me salta en el propio connect y no en el insert a la
>base de datos.
>
>
>
>>b) Sí lo encuentra pero el usuario apache (o el
>>usuario con que estás ejecutando httpd) no tiene
>>permisos para escribir en ese archivo
>>
>>
>
>Si creo que el problema se va a hayar aquí.
>
>www-data en pepe:~/ITSAS/riot$ ls -l riot.db
>-rwxrwxrwx 1 www-data www-data 5120 Nov 1 21:32
>riot.db
>
>Pero le he puesto de dueño y grupo el usuario del
>apache, además de darle todos los permisos a todo el
>mundo.
>
>Sin embargo he realizado diferentes pruebas abriendo
>un sesión python interactiva. Cuando realizo las
>operaciones sobre el fichero 'riot.db' como usuario
>www-data o cualquier otro usuario SOLO puedo leer y NO
>puedo escribir en la base de datos. PERO si lo hago
>como usuario root no tengo ningun problema para leer y
>escribir (lastima que el apache corra como usuario
>www-data).
>
>No se a que puede ser debido ya que como he indicado
>anteriormente el dueño del fichero es www-data. Estoy
>totalmente perdido.
>
>Os adjunto unos logs de las pruebas realizadas:
>
>Un usuario lectura:
>-----------------------
>
>zako en pepe:/var/www/ITSAS/riot$ python
>Python 2.3.5 (#2, Sep 4 2005, 22:01:42)
>[GCC 3.3.5 (Debian 1:3.3.5-13)] on linux2
>Type "help", "copyright", "credits" or "license" for
>more information.
>
>
>>>>import sqlite
>>>>con=sqlite.connect('riot.db', autocommit=1)
>>>>cur=con.cursor()
>>>>cur.execute('select * from signs')
>>>>cur.fetchall()
>>>>
>>>>
>[('xxx', 'yyy', 'zzz', 'xxx', 'yyy', 'zzz', 'false')]
>
>
>
>Un usuario escritura:
>-------------------------
>
>zako en pepe:/var/www/ITSAS/riot$ python
>Python 2.3.5 (#2, Sep 4 2005, 22:01:42)
>[GCC 3.3.5 (Debian 1:3.3.5-13)] on linux2
>Type "help", "copyright", "credits" or "license" for
>more information.
>
>
>>>>import sqlite
>>>>con=sqlite.connect('riot.db', autocommit=1)
>>>>cur=con.cursor()
>>>>cur.execute('insert into signs (dni, name, first,
>>>>
>>>>
>second, email, password) values ("zzz", "yyy", "xxx",
>"zzz", "yyy", "xxx")')
>Traceback (most recent call last):
> File "<stdin>", line 1, in ?
> File
>"/usr/lib/python2.3/site-packages/sqlite/main.py",
>line 244, in execute
> self.rs = self.con.db.execute(SQL)
>_sqlite.DatabaseError: unable to open database file
>
>
>¡¡¡¡Como root no ocurre ningun problema de los
>anteriores a la hora de insertar un registro!!!
>----------------------------------------------------------------------
>
>
>¿Que pasa si es el usuario de apache: www-data?
>-----------------------------------------------
>
>www-data en pepe:~/ITSAS/riot$ python
>Python 2.3.5 (#2, Sep 4 2005, 22:01:42)
>[GCC 3.3.5 (Debian 1:3.3.5-13)] on linux2
>Type "help", "copyright", "credits" or "license" for
>more information.
>
>
>>>>import sqlite
>>>>con=sqlite.connect('riot.db', autocommit=1)
>>>>cur=con.cursor()
>>>>cur.execute('select * from signs')
>>>>cur.fetchall()
>>>>
>>>>
>[('xxx', 'yyy', 'zzz', 'xxx', 'yyy', 'zzz', 'false'),
>('zzz', 'yyy', 'xxx', 'zzz', 'yyy', 'xxx', 'false')]
>
>
>>>>cur.execute('insert into signs (dni, name, first,
>>>>
>>>>
>second, email, password) values ("z", "a", "q", "w",
>"s", "x")')
>Traceback (most recent call last):
> File "<stdin>", line 1, in ?
> File
>"/usr/lib/python2.3/site-packages/sqlite/main.py",
>line 244, in execute
> self.rs = self.con.db.execute(SQL)
>_sqlite.DatabaseError: unable to open database file
>
>
>
>
>
>______________________________________________
>Renovamos el Correo Yahoo!
>Nuevos servicios, más seguridad
>http://correo.yahoo.es
>_______________________________________________
>Python-es mailing list
>Python-es en aditel.org
>http://listas.aditel.org/listinfo/python-es
>
>
>
Más información sobre la lista de distribución Python-es