SQLiteException: no such table: TABLE en dispositivo

3,403 views
Skip to first unread message

am.fraga.led

unread,
May 18, 2011, 6:31:20 AM5/18/11
to desarrolladores-android
Hola a todos.

Me he encontrado con el siguiente problema al probar una aplicacion en
un dispositivo.
Estoy empezando a trastear con sqlite en Android.

El caso es que me he creado una pequeña app que crea una pequeña base
de datos con 2 tablas.
Al probarla en el emulador, la aplicacion va perfecta:
- Se crea la base de datos en la ruta: /data/data/my_package/databases/
nombre_base_de_datos
- Compruebo que esta correctamente informada y puedo realizar
consultas

El problema aparece cuando la instalo en un dispositivo y la ejecuto.
Me lanza la siguiente
excepcion:

>> SQLiteException: no such table: TABLE: , while compiling: select * from TABLA

Ahora mismo desconozco porque en el emulador me funciona correctamente
pero no en el dispositivo.
Si os suena el problema o si podeis redirigirme a algun post similar,
os lo agradecería.

Un saludo!

am.fraga.led

unread,
May 18, 2011, 7:05:59 AM5/18/11
to desarrolladores-android
Hola de nuevo.

Estoy indagando un poco mas en el problema que tengo en el
dispositivo.
Accediendo mediante un terminal a la memoria del telefono, veo que la
base de datos existe en la ruta indicada:
/data/data/my_package/databases/nombre_base_datos

El caso es que al abrir la consola sqlite3 directamente en el
terminal, y tras indicar el comando para que me muestre las bases de
datos,
mi base de datos no se lista, es decir:

En el terminal:
#sqlite3
sqlite>
sqlite>.databases
seq name file
----- ---------------- -----------------------------------
0 main

tras ejecutar el comando .databases en la consola sqlite, deberia
listarme mi bse de datos no?

Un saludo

am.fraga.led

unread,
May 18, 2011, 9:19:51 AM5/18/11
to desarrolladores-android

Bueno, ya lo he solucionado.
Resulta que la base de datos no estaba actualizada en el dispositivo.
Listando las tablas de la base de datos usando un shell remoto
mediante adb, me he dado cuenta que la version de la base de datos no
era la correcta.
La cuestion es que directamente con el shell del terminal, no me
listaba las tablas de la base de datos.
Siento haber abierto el post.

Un saludo

Leonardo Fernandez

unread,
May 18, 2011, 9:49:16 AM5/18/11
to desarrollad...@googlegroups.com

Al contrario....el mismo puede ayudar a muchos... en todo caso podrías compartir como encontraste la solución

am.fraga.led

unread,
May 18, 2011, 10:41:20 AM5/18/11
to desarrolladores-android
Buenas.

Más que dar con la solución, diría que he encontrado mi error.
Simplemente he analizado las tablas de la base de datos con un shell
remoto mediante adb en lugar de con el terminal del dispositivo.

Resumo lo sucedido:

Dado que no disponía de mi PC y la aplicacion me devolvía esa
excepcion, probe a analizar la base de datos directamente desde el
terminal del dispositivo (es decir, no usaba el adb, sino la app
Better Terminal). Como he comentado, desde el terminal del propio
dispositivo puedes llegar a ver que la base de datos existe en la
memoria del telefono:

(A) Desde el terminal del dispositivo con acceso root:
------------------------------------------------------------------------------
$ su
# cd /data/data/mi_package/databases/
# ls
# mi_base_de_datos

Si ahora intentas analizar desde el terminal del propio dispositivo la
base de datos mediante sqlite:

1) Listar las bases de datos del dispositivo:
#
# sqlite3
sqlite>
sqlite>.databases
seq name file
----- ---------------- -----------------------------------
0 main

Como puedes comprobar, no se lista mi base de datos. Al parecer, en un
dispositivo real, esta informacion no se puede mostrar. Si alguien me
lo pudiera confirmar lo agradecería.

2) Analizar las tablas de la base de datos:
#
# sqlite3 /data/data/mi_package/databases/mi_base_de_datos
sqlite>
sqlite>.tables
sqlite>

Como puedes comprobar, no muestra ninguna tabla. Esto es lo que me
llevo a postear mi problema. No veía las tablas de la base de datos y
pense que se me escapaba algo al portar la app al dispositivo (en el
emulador iba perfect)


(B) Usando un shell remoto mediante adb
------------------------------------------------------------

Una vez llegue a mi casa, pude conectar el dispositivo al PC y
realizar las mismas comprobaciones desde el PC.
Desde el PC, abres un shell remoto y te conectas con el dispositivo
mediante adb.
A continuación realizas los mismos chequeos:

$ su
# cd /data/data/mi_package/databases/
# ls
# mi_base_de_datos

1) Listar las bases de datos del dispositivo:
#
# sqlite3
sqlite>
sqlite>.databases
seq name file
----- ---------------- -----------------------------------
0 main

En este caso, tampoco se lista mi base de datos.

2) Analizar las tablas de la base de datos:
#
# sqlite3 /data/data/mi_package/databases/mi_base_de_datos
sqlite>
sqlite>.tables
sqlite> table1 table2 ...

En este caso si me aparecian las tablas de la base de datos, por lo
que me pude dar cuenta de que la version de dicha base de datos no era
la correcta (las tablas no estaban renombradas)


Nada mas.
He comentado todo este follon por si le pasara a alguien algún día.

Un saludo

juan josé salvatierra severiche

unread,
May 18, 2011, 10:58:03 AM5/18/11
to desarrollad...@googlegroups.com
Gracias!  :D


--
Has recibido este mensaje porque estás suscrito al grupo "desarrolladores-android" de Grupos de Google.
Para publicar una entrada en este grupo, envía un correo electrónico a desarrollad...@googlegroups.com.
Para anular tu suscripción a este grupo, envía un correo electrónico a desarrolladores-a...@googlegroups.com
Para tener acceso a más opciones, visita el grupo en http://groups.google.com/group/desarrolladores-android?hl=es.




--
saludos.
paladin.s...@gmail.com

Leonardo Fernandez

unread,
May 18, 2011, 12:04:55 PM5/18/11
to desarrollad...@googlegroups.com
Gracias por el aporte...saludos

Sergio Sanz Moyano

unread,
Oct 19, 2011, 11:53:24 AM10/19/11
to desarrollad...@googlegroups.com
Me está pasando el mismo problema, y haciendo los pasos que comentas me doy cuenta que aunque exista la base de datos, la base de datos no tiene tablas.

En el proyecto veo que está en la carpeta assets la base de datos, voy a la parte de base de datos y tiene todas las tablas que he creado, le doy a depurar o ejecutar y copia todo el proyecto al emulador... Ahora voy al emulador, cojo la base de datos que se ha copiado, la saco fuera del emulador, veo su contenido y la BD está vacia, no tiene ninguna tabla. Qué hago mal para que al probar el programa copia la base de datos vacía sin tablas aunque las tenga?.

Saludos!

Julián Marqués

unread,
Oct 19, 2011, 1:24:21 PM10/19/11
to desarrollad...@googlegroups.com
Este mensaje parece que responde a otro, pero sólo me ha llegado este :/. 

De todas formas por si te puedo ayudar y por lo que sea no lo conoces en el blog de sgoliver hay 3 entradas muy bien explicadas de como utilzar sqlite, te dejo el link:


Si lo que quieres es copiar una BD supongo que lo que tienes que hacer es guardar el resultado de un select * from tabla-iesima en la tabla-nueva-iesima.

--
Has recibido este mensaje porque estás suscrito al grupo "desarrolladores-android" de Grupos de Google.

Para publicar una entrada en este grupo, envía un correo electrónico a desarrollad...@googlegroups.com.
Para anular tu suscripción a este grupo, envía un correo electrónico a desarrolladores-a...@googlegroups.com
Para tener acceso a más opciones, visita el grupo en http://groups.google.com/group/desarrolladores-android?hl=es.



--
Julián Fco Marqués García.

Sergio Sanz Moyano

unread,
Oct 19, 2011, 3:14:56 PM10/19/11
to desarrollad...@googlegroups.com
muchisimas gracias por el aporte!, me va a servir de mucho el blog ese.

Un saludo!
Un cordial saludo,
Sergio Sanz Moyano
Reply all
Reply to author
Forward
0 new messages