SQLite a renvoyé un code d'erreur de 14
Je suis en train de copier une base de données existante à partir de mon dossier des actifs et d'exécuter certaines opérations. Tout fonctionne bien mais j'ai obtenu l'erreur suivante dans le journal des fichiers de mon émulateur:
sqlite returned: error code = 14, msg = cannot open file at source line 25467
09-06 11:23:41.844: INFO/Database(22560): sqlite returned: error code = 14, msg = cannot open file at source line 25467
09-06 11:23:41.885: ERROR/Database(22560): sqlite3_open_v2("/data/data/com.dhani.Lazy/databases/LazyDB.sqlite", &handle, 1, NULL) failed
09-06 11:23:41.885: WARN/System.err(22560): android.database.sqlite.SQLiteException: unable to open database file
09-06 11:23:41.894: WARN/System.err(22560): at android.database.sqlite.SQLiteDatabase.dbopen(Native Method)
09-06 11:23:41.904: WARN/System.err(22560): at android.database.sqlite.SQLiteDatabase.<init>(SQLiteDatabase.java:1849)
09-06 11:23:41.914: WARN/System.err(22560): at android.database.sqlite.SQLiteDatabase.openDatabase(SQLiteDatabase.java:820)
09-06 11:23:41.914: WARN/System.err(22560): at com.dharani.LazyApple.Database.DataBaseHelper.checkDataBase(DataBaseHelper.java:72)
09-06 11:23:41.914: WARN/System.err(22560): at com.dharani.LazyApple.Database.DataBaseHelper.createDataBase(DataBaseHelper.java:47)
09-06 11:23:41.914: WARN/System.err(22560): at com.dharani.LazyApple.Database.DataBaseHelper.Login(DataBaseHelper.java:166)
09-06 11:23:41.914: WARN/System.err(22560): at com.dharani.LazyApple.Views.LoginView$1.onClick(LoginView.java:63)
09-06 11:23:41.934: WARN/System.err(22560): at android.view.View.performClick(View.java:2485)
09-06 11:23:41.934: WARN/System.err(22560): at android.view.View$PerformClick.run(View.java:9080)
09-06 11:23:41.944: WARN/System.err(22560): at android.os.Handler.handleCallback(Handler.java:587)
09-06 11:23:41.944: WARN/System.err(22560): at android.os.Handler.dispatchMessage(Handler.java:92)
09-06 11:23:41.944: WARN/System.err(22560): at android.os.Looper.loop(Looper.java:123)
09-06 11:23:41.944: WARN/System.err(22560): at android.app.ActivityThread.main(ActivityThread.java:3683)
09-06 11:23:41.964: WARN/System.err(22560): at java.lang.reflect.Method.invokeNative(Native Method)
09-06 11:23:41.964: WARN/System.err(22560): at java.lang.reflect.Method.invoke(Method.java:507)
09-06 11:23:41.964: WARN/System.err(22560): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)
09-06 11:23:41.964: WARN/System.err(22560): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
09-06 11:23:41.964: WARN/System.err(22560): at dalvik.system.NativeStart.main(Native Method)
Des suggestions sur la façon de résoudre ce problème?
source d'informationauteur Kishore
Vous devez vous connecter pour publier un commentaire.
J'ai vu cette erreur se produit si vous utilisez sharedUserId dans votre manifeste. Si vous modifiez le sharedUserId d'une application et de la réinstaller l'application, il n'a pas l'actionnariat requis pour écrire dans la base de données SQLite.
Cela peut être un peu tard, mais espérons que cela aide pour celui qui reçoit ce problème (car je ne peux pas trouver une solution définitive autour).
Je pense connaître la raison de cette cause (au moins pour mon cas). En regardant dans le DDMS --> Fichier de l'Explorateurvous me rends compte que la Dossier de Base de données (/data/données/bases de données//) n'existe pas, c'est pourquoi l'application ne peut pas créer le fichier de base de données dans ce dossier inexistant. Si vous pouvez créer un dossier bases de données, d'une certaine manière, vous pouvez éviter ce problème.
Parce que je suis paresseux, j'ai simplement utilisé le /data/data//fichiers/dossier quand je suis dans l'Émulateur de mode. Vous pouvez obtenir les fichiers dir en utilisant ceci:
Cela a fonctionné à merveille pour moi dans l'Émulateur.
Espère que cela aide quelqu'un.
Dans le cas où vous souhaitez voir un peu de code:
EDIT: j'ai essayé en vous connectant à Facebook (mon application a FB intégration) sur l'Émulateur et /dossier bases de données est apparu par la suite (et persiste). Pas sûr de ce qui s'est passé, mais il est possible de créer ce dossier en quelque sorte. Quelque chose pour un autre expert ici pour faire la lumière sur.
Aujourd'hui, cette question m'a coûté 3 heures.
Ce que j'ai essayé:
J'ai résolu le problème en copiant le code à partir d'un partage Dropbox compte à un autre emplacement et refactoring du code, dans le Manifeste Android et java fichiers avec un autre nom de package.
L'application fonctionne parfaitement maintenant.
J'ai eu le même problème.
Ce que résolu, a été le remplacement de
avec
J'ai eu le même code d'erreur sur le logcat:
sqlite returned: error code = 14, msg = cannot open file at source line
L'application irait à l'amende (en fait je n'ai pas d'avis toutes les questions jusqu'à ce que j'ai regardé logcat!). Logcat m'a informé de cette erreur j'ai donc pensé qu'il serait mieux pour obtenir ce résolus maintenant.
Il s'avère que si j'ai édité le fichier de manifeste, il se débarrasser de l'erreur!
Dans mon manifeste, j'avais tapé dans le incorrectes min version du sdk. J'ai découvert ce parce que dans le fichier de manifeste, il y avait un point d'exclamation indicateur le long de la colonne de gauche du code de m'informant de mon erreur.
Pour être complet, je recommande que vous devriez assurez-vous que toutes les erreurs/exclamations ont été fixés de sorte que vous pouvez au moins la règle.
Il semble que cette erreur (et beaucoup plus dans eclipse) peuvent se produire en fonction d'un grand nombre de facteurs! Ah les joies!
Ou une autre solution qui a fonctionné pour moi est comme suit :
Ma raison était différent: j'ai accédé à la version en ligne de l'application, qui a créé la base de données. L'application PhoneGap puis ne pouvait pas accéder au fichier créé par une autre application. De compensation de la mémoire cache du navigateur résolu mon problème.
L'énigme est résolue, testé dans l'émulateur sans les DB et les marquer de mal, alors vous devez d'abord créer la DB
Après cela, faire vos opérations. Bonne chance!
J'ai réussi à résoudre ce problème en réalisant que la documentation est un peu trompeur. Vous devez avoir un nom de fichier pour votre zippée actif qui est lié au nom de votre base de données. Par exemple, si votre base de données est appelée
someData.db
votre fichier zip doit êtresomeData.zip
.Aussi, il semble y avoir un peu mieux diagnostics si vous essayez d'ouvrir une écriture db. Je l'ai fait dans le constructeur, comme suit, qui a été finalement, ce qui m'a aidé à trouver la solution.
Assurez-vous de fermer toutes votre curseur et les instances db. J'ai eu cette erreur en raison de la réalisation de multiples insertions et mises à jour et de ne pas fermer les curseurs, provoquant curseur de fuites, et impossible d'ouvrir la db.