45 votes

Pourquoi ai-je une erreur "sqlite3: not found" sur un Nexus One enraciné lorsque j'essaie d'ouvrir une base de données à l'aide du shell adb?

# sqlite3 /data/data/com.moodme.android/databases/moodme
sqlite3 /data/data/com.moodme.android/databases/moodme
sqlite3: not found

93voto

Evelio Tarazona Points 4100

Comme une alternative (peut ne pas être sécurisé ou même bonne idée), vous pouvez toujours télécharger l' sqlite3 binaires /system/bin cela a fonctionné pour moi:

D'abord, permet de mont - /system/ afin de permettre la lecture/écriture (rw)

$ adb shell
$ su
# mount -o remount,rw /system

dans un autre terminal cd (change directory) où sqlite3 est et permet de pousser

$ ls
sqlite3
$ adb push sqlite3 /sdcard/

Maintenant, revenons à l'autre shell vous permet de copier et de modifier les autorisations du fichier binaire

# cat /sdcard/sqlite3 > /system/bin/sqlite3
# chmod 4755 /system/bin/sqlite3

Maintenant permet de monter back /system/ en lecture seule (ro)

# mount -o remount,ro /system

Et maintenant, nous pouvons utiliser sqlite3 de shell:

# sqlite3 /data/data/com.telly/databases/fun.db
SQLite version 3.7.4
Enter ".help" for instructions
sqlite> .tables
android_metadata  lulz               

Note: je suis en utilisant le sqlite3 binaire qui vient avec "SuperOneClickv1.6.5-ShortFuse"

Vous pouvez toujours tirer sqlite3 binaires à partir de l'émulateur:

Démarrer un émulateur, puis à partir d'un terminal

$ adb pull /system/xbin/sqlite3

Si vous êtes paresseux comme moi, vous pouvez en télécharger un ici pour ICS ou avant ou pour Jelly Bean et plus tard ici

Assurez-vous d'utiliser la bonne pour votre version d'Android que vous pouvez obtenir eloc_library[1306]: 14446 cannot locate 'sqlite3_enable_load_extension'... ou des erreurs similaires sur exécuter

21voto

CommonsWare Points 402670

Sur l'émulateur Android, sqlite3 est en /system/xbin . Il n'y a pas /system/xbin sur un Nexus One (Android 2.2). Par conséquent, je soupçonne que sqlite3 n’est pas installé sur le Nexus One.

12voto

jiahao Points 952

À partir de la réponse de evelio, j'ai eu de problème pour pousser le sqlite3 fichier /system/bin. Donc, au lieu de cela, j'ai poussé à l' /sdcard.

Dans ce fil, j'ai trouvé la bonne Solution (réponse de Kila): Comment puis-je installer sqlite3 sur enracinée NexusOne pistes de pain d'épice

$ adb push sqlite3 /sdcard/

$ adb shell

$ su

# mount -o remount,rw -t yaffs2 /dev/block/mtdblock3 /système

# dd if=/sdcard/sqlite3 of=/system/bin/sqlite3

# chmod 4755 /system/bin/sqlite3

# mount -o remount,ro -t yaffs2 /dev/block/mtdblock3 /système

Il fonctionne sur mon Samsung Galaxy S II avec 2.3.3

5voto

Jeremy Kao Points 29

Pour installer sqlite3 sur des appareils NON-ROOTED, voici une méthode qui a fait ses preuves sur mon Galaxy S3, FYR.

 $ adb -e pull /system/xbin/sqlite3  # get sqlite3 binary from emulator with the same CPU arch.
$ adb -d push sqlite3 /mnt/sdcard   # push it
$ adb -d shell
$ run-as <PACKAGE_NAME>             # run as your app, which should be debuggable.
$ cd databases; pwd
/data/data/<PACKAGE_NAME>/databases
$ cat /mnt/sdcard/sqlite3 > sqlite3 # copy it to internal storage directory
$ ls -l sqlite3
-rw-rw-rw- u0_a138  u0_a138     36860 2014-03-26 06:37 sqlite3
$ chmod 777 sqlite3                 # change mode bits, to be executable

$ ./sqlite3                         # now it works on your NON-ROOTED device
SQLite version 3.7.11 2012-03-20 11:35:50
Enter ".help" for instructions
Enter SQL statements terminated with a ";"
sqlite>
 

2voto

vinzzz Points 67

Sur le Nexus 4, procédez comme suit:

 adb shell
$ su
# mount -o remount,rw -t yaffs2 /dev/block/mtdblock3 /system
# dd if=/sdcard/sqlite3 of=/system/xbin/sqlite3
# chmod 777 /system/xbin/sqlite3
# mount -o remount,ro -t yaffs2 /dev/block/mtdblock3 /system
 

Notez que le dossier est / system / xbin et que le chmod est 777

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X