Error: el archivo está encriptado o no es una base de datos

Usé PHP para crear una base de datos con una tabla. Lo hice de la siguiente manera:

 

Después de ejecutar mi archivo PHP desde la línea de comando: “php test.php” obtengo un nuevo archivo en mi directorio que se llama “test.db” (esto es lo que quería). Entonces, en la línea de comando, escribo “sqlite3 test.db”. De esta forma, ingreso en la sesión de la línea de comando sqlite. Luego, dentro de sqlite3, escribo “.tables” (quería verificar si una nueva base de datos contiene tablas que se supone que contiene). Como resultado, obtengo:

 Error: file is encrypted or is not a database 

Entonces, no funciona. ¿Alguien sabe algo sobre este problema? Gracias de antemano por cualquier ayuda.

Este es un problema de desajuste de versión.

Para abrir una base de datos usando PHP5 y SQLite, necesitamos usar una PDO y no la función sqlite_open() . Un ejemplo de cómo abrir o crear una base de datos:

 try { /*** connect to SQLite database ***/ $dbh = new PDO("sqlite:VPN0.sqlite"); echo "Handle has been created ...... 

"; } catch(PDOException $e) { echo $e->getMessage(); echo "

Database -- NOT -- loaded successfully .. "; die( "

Query Closed !!! $error"); } echo "Database loaded successfully ....";

Enfrenté el mismo problema, use pdo en lugar de sqlite_open ()

este enlace es muy útil y aquí está mi fragmento de código, funciona perfectamente, espero que ayude

 $dir = 'sqlite:YourPath/DBName.db'; $dbh = new PDO($dir) or die("cannot open the database"); $query = "SELECT * from dummy_table"; foreach ($dbh->query($query) as $row) { echo $row[0]; } 

Es muy probable que esto no coincida con la versión de php sqlite y su ejecutable sqlite independiente.

vea esto: http://us3.php.net/manual/en/book.sqlite.php – bajo “notas aportadas por el usuario”, de Andrew Paul Dickey.

para una solución rápida puede instalar y usar el ejecutable independiente sqlite2.

Recientemente me encontré con este mismo problema y he descubierto lo que está sucediendo. (Sí, todas las otras respuestas son correctas, es un problema de desajuste de versión.) Estoy publicando esto para proporcionar información adicional que puede ser útil para otros que enfrentan este problema …

Resumen:

El error se debe al hecho de que la herramienta de línea de comandos sqlite3.exe (que implementa la versión 3 de SQLite) no puede leer archivos de bases de datos creados mediante la interfaz de procedimientos de PHP en SQLite (que implementa la versión 2 de SQlite).

Discusión:

Estoy siguiendo un tutorial que describe cómo usar SQLITE con PHP: Tutorial PHP de SQLite (Tenga en cuenta que estoy ejecutando PHP 5.2.14 en Windows XP). Como resultado, PHP 5.2 tiene dos formas (incompatibles) de interactuar con el sistema de administración de bases de datos SQLite; una API de procedimiento ( SQLite ) y una API orientada a objetos ( funciones SQLite (PDO_SQLITE) ). La API de procedimientos utiliza SQLite versión 2 y la API de OOP utiliza SQLite versión 3. Para las plataformas PHP de Windows, la API de procedimientos se habilita al quitar el comentario de esta línea en php.ini :

extension=php_sqlite.dll

Mientras que la API OOP está habilitada al descomentar estas líneas:

extension=php_pdo.dll
extension=php_pdo_sqlite.dll

Tenga en cuenta que hay una herramienta Win32 gratuita que permite la administración y manipulación de cualquier versión de las bases de datos SQLite : Administrador de SQLite . Esta herramienta permite convertir una base de datos de la versión 2 (creada con la API de procedimientos de PHP) en una base de datos de la versión 3 que se puede leer utilizando la herramienta de línea de comandos sqlite3.exe .

La pregunta tiene dos años, pero ahora se puede resolver de esta manera:

 class MyDB extends SQLite3 { function __construct() { $dbFile = __DIR__ . '/../../../adminer/Dictionary.sqlite'; $this->open($dbFile); } } $db = new MyDB(); $db->exec('CREATE TABLE students (names VARCHAR(80))'); echo "done"; 

Fuente: http://php.net/manual/en/sqlite3.open.php

¿Por qué abre el DB dos veces?

Prueba este código:

  

Editar: Fin probablemente tenga razón; quizás deba verificar la versión de SQLite con phpinfo ().

Hay una forma más simple de resolver ese problema. Puede convertir el archivo de base de datos sqlite 2 a sqlite 3. Lo hice con el progtwig SQLiteManager en Mac OS X.