Autore Topic: SQLException: No such table  (Letto 811 volte)

Offline emaborsa

  • Utente normale
  • ***
  • Post: 274
  • Java Developer
  • Respect: +33
    • Google+
    • emaborsa
    • Mostra profilo
    • www.emaborsa.com
  • Dispositivo Android:
    Samsung Galaxy S2
  • Sistema operativo:
    Linux 10 - Win8.1 - Android 4.1.2
SQLException: No such table
« il: 25 Agosto 2012, 12:39:07 CEST »
0
...ho un problema con la mia applicazione. Sul mio Galaxy S2 funziona tutto alla perfezione, come su un centinaio di persone che lo hanno scaricata dallo store. Solo ad alcuni però sempre allo stesso punto da un eccezione SQL: no such table. Uno ha un Sony-Ericsson Xperia Arc (LT15i) con Android 2.3.4 e un altro ha un HTC con 4.0.1.
Capisco che no such table vuol dire che O non mi crea la tebella O la chiamata SQL è errata. Ma com'è possibile che sugli altri funziona? E sopratutto, come faccio a trovare l'errore?

Offline Melanogaster

  • Utente normale
  • ***
  • Post: 260
  • Respect: +11
    • Mostra profilo
  • Dispositivo Android:
    SII
  • Sistema operativo:
    Kubuntu
R: SQLException: No such table
« Risposta #1 il: 25 Agosto 2012, 13:10:20 CEST »
0
DB manomesso dall'utente?
Io ogni tanto ricevo di questi errori ma li addebito a ciò...

Inviato dal mio GT-I9100 con Tapatalk 2

Offline emaborsa

  • Utente normale
  • ***
  • Post: 274
  • Java Developer
  • Respect: +33
    • Google+
    • emaborsa
    • Mostra profilo
    • www.emaborsa.com
  • Dispositivo Android:
    Samsung Galaxy S2
  • Sistema operativo:
    Linux 10 - Win8.1 - Android 4.1.2
Re:SQLException: No such table
« Risposta #2 il: 25 Agosto 2012, 13:20:50 CEST »
0
come manomesso?
Comunque non capisco veramente. All'installazione dell'app viene creato il db. Una query su questo db funziona. L'altra query sempre sullo stesso db invece da no such table....non ha senso.
Ovviamente solo su pochi NON funziona. :/
« Ultima modifica: 25 Agosto 2012, 13:25:05 CEST da emaborsa »

Offline iceweasel

  • Moderatore globale
  • Utente senior
  • *****
  • Post: 878
  • Respect: +147
    • Mostra profilo
  • Dispositivo Android:
    LGE P990 - Google Nexus 5
  • Sistema operativo:
    Linux Debian Sid
Re:SQLException: No such table
« Risposta #3 il: 25 Agosto 2012, 14:37:29 CEST »
0
Per caso il database è stato creato esternamente e poi copiato sul dispositivo Android senza aver creato la tabella "android_metadata" e viene aperto senza usare "SQLiteDatabase.NO_LOCALIZED_COLLATORS" ?
adb logcat | tee /tmp/logcat | grep TAG

Offline emaborsa

  • Utente normale
  • ***
  • Post: 274
  • Java Developer
  • Respect: +33
    • Google+
    • emaborsa
    • Mostra profilo
    • www.emaborsa.com
  • Dispositivo Android:
    Samsung Galaxy S2
  • Sistema operativo:
    Linux 10 - Win8.1 - Android 4.1.2
Re:SQLException: No such table
« Risposta #4 il: 25 Agosto 2012, 14:57:32 CEST »
0
Per caso il database è stato creato esternamente e poi copiato sul dispositivo Android senza aver creato la tabella "android_metadata" e viene aperto senza usare "SQLiteDatabase.NO_LOCALIZED_COLLATORS" ?

No, il database viene creato dall'app. Comunque ho scoperto che il problema è un'altro, cioè non viene creata la seconda tabella, che fa riferimento alla prima....prima mi ero sbagliato :/
Il metodo onCreate:

Codice (Java): [Seleziona]
@Override
public void onCreate(SQLiteDatabase database) {
database.execSQL(CREATE_PARK_DETAILS);
insertParks(database);
database.execSQL(CREATE_DIARY);
}

Le due variabili:

CREATE_PARK_DETAILS:
   
Codice (Java): [Seleziona]
 CREATE TABLE cableparks (id int, name varchar(100), city varchar(100), state varchar(50), logo varchar(50), xCoord int, yCoord int, url varchar(100) DEFAULT '', street varchar(100) DEFAULT '', cap varchar(10) DEFAULT '', PRIMARY KEY (id));
CREATE_DIARY:
   
Codice (Java): [Seleziona]
 CREATE TABLE diary (id int, comment text, addDate long, PRIMARY KEY (id), FOREIGN KEY (id) REFERENCES cableparks (id));
« Ultima modifica: 25 Agosto 2012, 15:00:36 CEST da emaborsa »