“Impossible de faire un chmod” avertissement dans KitKat lors de la tentative de openOrCreateDatabase()
Je reçois ce journal avertir message (sur Nexus 4 stock 4.4):
Failed to chmod(/storage/emulated/0/Android/data/com.myapp/mydb.db): libcore.io.ErrnoException: chmod failed: EPERM (Operation not permitted)
lors de l'appel:
SQLiteOpenHelper.getReadableDatabase()
Le message se produit si la base de données existe déjà ou pas.
Le message ne se produit pas lorsque sur le Galaxy Nexus de course de stock 4.3.
Pourquoi est-ce qui se passe et c'est quelque chose qui peut être ignoré en toute sécurité?
EDIT: j'ai soulevé un rapport de bug: https://code.google.com/p/android/issues/detail?id=64345
La fonctionnalité de base de données de votre application de fonctionner après cette erreur? Généralement, les émules de stockage est une drôle de bête, comme il est censé imiter la non-propriété de la propriété d'un système de fichiers FAT, sur le dessus de l'un d'Unix. Deux réflexions me viennent à l'esprit: d'abord que c'est une tentative de modification de l'autorisation de bits sur un fichier lorsque le émulé de stockage ne prend pas en charge, ou la seconde, que les émules de stockage est "de manière inattendue" l'appui de la propriété des fichiers, et vous avez une version obsolète de la file de gauche à partir d'une précédente installation de votre programme sous un autre UID.
Il serait très intéressant de voir la sortie de
Oui, la base de données fonctionne bien après ce message de journal. Quand j'ai essayer la commande, il devient clair que le chemin d'accès n'existe pas. Le chemin de base doit être "/storage/sdcard0" ou "/storage/emulated/legacy". Ressemble KitKat est en supposant 4.3 émulé stockage des chemins???
Je n'ai pas regardé dans le détail, mais il est possible que ce qui est monté et où pourrait être différente pour l'utilisateur unix ID de la BAD s'exécute, et l'utilisateur de l'application s'exécute. L'exécution d'un outil de travail sur votre appareil? (c'est à dire, a le bug qui a récemment brisé il été résolu?) Si oui, vous pouvez l'utiliser à partir de la bad pour obtenir un shell comme l'app id d'utilisateur, puis voir si le chemin d'accès n'existe pour l'application de l'utilisateur
C'est l'explication de pourquoi votre enquête n'a pas été révélant rien de significatif, mais non, ce n'est pas une solution.
Il serait très intéressant de voir la sortie de
adb shell "ls -l /storage/emulated/0/Android/data/com.myapp/mydb.db"
Oui, la base de données fonctionne bien après ce message de journal. Quand j'ai essayer la commande, il devient clair que le chemin d'accès n'existe pas. Le chemin de base doit être "/storage/sdcard0" ou "/storage/emulated/legacy". Ressemble KitKat est en supposant 4.3 émulé stockage des chemins???
Je n'ai pas regardé dans le détail, mais il est possible que ce qui est monté et où pourrait être différente pour l'utilisateur unix ID de la BAD s'exécute, et l'utilisateur de l'application s'exécute. L'exécution d'un outil de travail sur votre appareil? (c'est à dire, a le bug qui a récemment brisé il été résolu?) Si oui, vous pouvez l'utiliser à partir de la bad pour obtenir un shell comme l'app id d'utilisateur, puis voir si le chemin d'accès n'existe pour l'application de l'utilisateur
C'est l'explication de pourquoi votre enquête n'a pas été révélant rien de significatif, mais non, ce n'est pas une solution.
OriginalL'auteur Mark | 2013-12-07
Vous devez vous connecter pour publier un commentaire.
J'ai rencontré le même problème que le vôtre.
Il n'a pas d'importance quand mon app ajouter une nouvelle table dans la base de données de fichier.
Peut-être que vous pouvez ignorer cette question.
OriginalL'auteur galian
J'ai affronté le même message. Juste le jeter, et que votre application va continuer à travailler très bien. Vous serez en mesure d'insérer et d'interroger votre base de données normalement.
OriginalL'auteur Essam Mahdy
Je suis Taiwanais, je suis heureux de répondre à cette question.
Hier(2014/09/21) j'ai rencontré le même problème (en même avertir message, insérer le nombre de données à partir de SQL server(10.0.2.2) à 2 tables dans l'émulateur SQLite, un tableau des données reçues, une autre table est vide).
Mais aujourd'Hui(2014/09/22) j'écris une autre application de test. Cette fois, j'essaie d'insérer quelques données à partir de SQL server(10.0.2.2) dans 2 tables de SQLite dans une Carte SD, cette fois, 2 table de données reçues.
La seule différence est
EMULATOR
réglage.Agrandir la carte SD configuration de l'espace, à partir de quelques MO à 8 go ou plus si possible.
Bien que le jaune d'avertissement apparaît une fois de plus, mais tous insertion de succès au travail.
émulateur de réglage de la photo
Une réponse qui se termine par "Jaune d'avertissement apparaît une fois de plus" n'est pas correcte. Toujours à la recherche de la raison de cet avertissement.
OriginalL'auteur Jackie_Hung