2011-07-11 2 views
2

J'ai une base de données sqlite que je veux ouvrir en utilisant sqlite3.exe. Maintenant, je reçois une erreur lorsque j'essaie de faire des requêtes, en disant "fichier est chiffré ou n'est pas une base de données". Cela peut sembler stupide mais j'ai regardé autour d'Internet et je ne trouve juste pas comment fournir un mot de passe (ou une clé) à sqlite3.exe pour déchiffrer la base de données. L'option -help ou la commande .help de sqlite3.exe n'affiche rien pour faire cela ... Est-il possible de le faire, et si oui, comment puis-je le faire?Comment fournir un mot de passe à sqlite3.exe?

+0

Etes-vous sûr que le fichier est une base de données sqlite valide et n'est pas corrompu? –

+0

Je ne suis pas sûr puisque quelqu'un me l'a envoyé par email, mais je sais ce que le mot de passe est censé être si c'est une base de données cryptée valide. C'est pourquoi je veux le valider. Si je fournis un mot de passe à sqlite3 et que j'obtiens toujours cette erreur, ce serait un signe que la base de données est corrompue, mais pour l'instant je n'ai pas trouvé comment fournir un mot de passe. – Carl

+0

Et le gars qui me l'a envoyé par email est en vacances depuis 2 semaines donc je ne peux pas lui demander comment faire ça. Mais il m'a donné un mot de passe donc je suppose que ma base de données est cryptée. – Carl

Répondre

0

Il est peu probable que la base de données soit cryptée, sauf si vous avez des raisons de le croire. Êtes-vous en mesure d'ouvrir la base de données ou obtenez-vous cette erreur une fois que vous avez lancé une requête SQL? Si c'est le premier, votre fichier n'est probablement pas un db sqlite pour commencer, ou il est corrompu; si elle est celle-ci, s'il vous plaît vérifier l'intégrité de votre db avec:

pragma integrity_check; 

Voir http://www.sqlite.org/pragma.html#pragma_integrity_check pour plus d'infos sur ce pragma. Dans tous les cas, à moins que votre base de données ne soit vraiment cryptée (ce que sqlite ne supporte pas nativement), votre base de données est probablement inutilisable.

+0

Je reçois l'erreur une fois que j'émets une requête SQL. SQLite3.exe ne se plaint pas au début si je fais sqlite3.exe myDBname.db – Carl

+0

Ouais désolé bout cela, j'ai oublié que sqlite ne se plaindra pas jusqu'à ce qu'il fasse quelque chose avec le db. Pouvez-vous inspecter ce fichier et voir s'il semble crypté (comme en l'ouvrant avec le bloc-notes)? –

+0

Je ne sais pas à quoi une base de données chiffrée est censée ressembler, mais il y a beaucoup de caractères illisibles et de temps en temps un nom que je reconnais (par exemple, les noms des tables dans la base de données). – Carl

0

SQLite signale cette erreur lorsque vous lui transmettez un fichier qui n'est pas réellement une base de données SQLite ou qui a été endommagé. Plusieurs addons SQLite supportent le cryptage, mais à part ça, SQLite n'a pas de cryptage.

Cela peut également se produire lorsque vous essayez d'ouvrir une base de données SQLite v3 avec SQLite v2 (et éventuellement pour d'autres incohérences de version).

En supposant que vous avez subi une corruption (et pas seulement en passant le mauvais fichier, ou en utilisant la mauvaise version de SQLite), vous pouvez vérifier les paramètres PRAGMA synchronous que vous utilisez, et également the list of fixed data-corrupting bugs.

0

Checkout this this forum here. Le gars a eu la même question que toi. La chose est qu'il n'y a aucune forme de protection offerte en tant que paquet standard dans sqlite3 API, mais vous pouvez essayer System.Data.SQLite. Ce sont les codes affichés sur le forum:

#include <SQLite.au3> don't include sqlite.dll.au3 !!! 

_SQLite_Startup ("System.Data.SQLite.dll") 
ConsoleWrite(_SQLite_LibVersion() & @LF) 
_SQLite_Open("testcrypt.db") 
_SQLite_Exec(-1, "pragma key = 'Radu is happy!';create table if not exists test (id integer, val text);" & _ 
       "insert into test values (1, 'abc');") 
Local $row 
_SQLite_QuerySingleRow(-1, "select * from test;", $row) 
ConsoleWrite($row[1] & @LF) 
_SQLite_Close() 
_SQLite_Shutdown() 

espérons que cela aide.

Questions connexes