ver una tutorial studio para hacer fichero español descargar datos crear consultas con como aplicaciones acceder sqlite permissions

una - sqlite android tutorial español



SQLite: base de datos de solo lectura (7)

Tengo una base de datos SQLite que estoy usando para un sitio web. El problema es que cuando trato de INSERT INTO , obtengo una PDOException

SQLSTATE[HY000]: General error: 8 attempt to write a readonly database

Hice SSH en el servidor y compruebe los permisos, y la base de datos tiene los permisos

-rw-rw-r--

No estoy tan familiarizado con los permisos * nix, pero estoy bastante seguro de que esto significa

  • No es un directorio
  • El propietario tiene permisos de lectura / escritura (ese soy yo, de acuerdo con ls -l )
  • El grupo tiene permisos de lectura / escritura
  • Todos los demás solo tienen permisos de lectura

También busqué en todas partes que conocía el uso del programa sqlite3 , y no encontré nada relevante.

Debido a que no sabía con qué permisos PDO intenta abrir la base de datos, lo hice

chmod o+w supplies.db

Ahora, tengo otra PDOException :

SQLSTATE[HY000]: General error: 14 unable to open database file

Pero SÓLO ocurre cuando intento ejecutar una consulta INSERT luego de que la base de datos está abierta.

¿Alguna idea de lo que está pasando?



Esto puede ser causado por SELinux. Si no desea deshabilitar completamente SELinux, debe establecer el directorio db fcontext a httpd_sys_rw_content_t.

semanage fcontext -a -t httpd_sys_rw_content_t "/var/www/railsapp/db(/.*)?" restorecon -v /var/www/railsapp/db


Esto puede suceder cuando el propietario del archivo SQLite no es el mismo que el usuario que ejecuta el script. Se pueden producir errores similares si no se puede escribir toda la ruta del directorio (es decir, cada directorio en el camino).

¿A quién pertenece el archivo SQLite? ¿Tú?

¿Con quién se está ejecutando el script? Apache o nadie?



Obtuve el mismo error de IIS en Windows 7. Para solucionar este error, tuve que agregar permisos de control total a la cuenta IUSR para el archivo de base de datos sqlite. No necesita cambiar los permisos si usa sqlite en webmatrix en lugar de IIS.


Obtuve este error cuando intenté escribir en una base de datos en un sistema Android.

Aparentemente, sqlite3 no solo necesita permisos de escritura para el archivo de base de datos y el directorio contenedor (como ya dijo @ austin-hyde en su respuesta), sino también la variable de entorno TMPDIR tiene que apuntar a un directorio (posiblemente editable).

En mi sistema Android lo configuré en TMPDIR="/data/local/tmp" y ahora mi script se ejecuta como esperaba :)


Para mí, el problema era la aplicación de SELinux en lugar de los permisos. El error de "solo lectura de la base de datos" desapareció una vez que deshabilité la aplicación, siguiendo la sugerencia de Steve V. en un comentario sobre la respuesta aceptada.

echo 0 >/selinux/enforce

Al ejecutar este comando, todo funcionó según lo previsto (CentOS 6.3).

El problema específico que encontré fue durante la configuración de Graphite. Comprobé tres veces que el usuario de apache poseía y podía escribir tanto en graphite.db como en mi directorio padre. Pero hasta que "arreglé" SELinux, todo lo que obtuve fue un seguimiento de la pila con el efecto de: DatabaseError: intentar escribir una base de datos de solo lectura