[ante-scriptum: il s'agit d'une question de réponse auto-réponse, vous n'avez pas besoin de la peine de répondre]
J'ai couru dans un problème de configuration étrange, non documenté n'importe où sur le page php.net spécifique ou à Stackoverflow. p>
Lors de l'ouverture d'une base de données SQLite existante sur Windows, la même erreur est conservée indiquant: p>
bien que le code exécuté soit copié / collé du manuel: p> Je n'ai pu ouvrir cette base de données, comme je avait essayé toutes sortes de divers DSN tout en googling: p> sqlstate [HY000] [14] Impossible de Ouvrir le fichier de base de données code> p>
dsn = 'sqlite: / c: \\ complet \\ chemin \\ to \\ db'; // - failed - code> p>
$ DSN = 'sqlite: // c: / complet / chemin / chemin / à / db'; // - failed - code> p> p>
4 Réponses :
Notez la simple barre oblique dans le DSN Écrivez votre DSN comme ceci: p>
Cela fonctionne avec J'espère que cela vous fera économiser du temps à l'avenir! P> SQLite: / code>? Il suffit de le laisser tomber! P>
sqlite: nom.db code>. p>
$ dsn = 'sqlite: c: \ complet \ path \ to \ nom.db'; // --works - code> p>
$ dsn = 'sqlite: .. \ data \ nom.db'; // --works - code> p>
$ dsn = 'sqlite: nom.db'; // --works - code> p>
Je ne sais pas quand il s'est arrêté, mais cela ne semble plus fonctionner avec des chemins relatifs plus ( Voir Docs ).
@dhobbs, l'avez-vous testé dans la pratique? Les chemins relatifs fonctionnent avec PHP 5.4, malgré la documentation était la même chose à l'époque .
@user, j'ai rencontré l'incapacité d'utiliser un chemin relatif à ce moment-là, c'est pourquoi j'ai fini de commenter ici, mais je n'ai plus ce projet et je ne me souviens plus de tous les détails.
juste une petite annexe à @Justin Réponse:
Vous pouvez également utiliser le style de chemin Linux sur Windows: P>
$dsn = 'sqlite:c:/full/path/to/name.db';
mieux que (juste pour ceux qui se demandent à propos de PDO et beaucoup de ses bugs étranges.) P> PDO ('SQLite: ...') code> est d'utiliser php
sqlite3 code> extension et son
sqlite3 code> classe. J'ai essayé vos conseils ci-dessus avec une base de données sur un lecteur externe (dur) et il n'a pas fonctionné (donnant toujours la même erreur que celle mentionnée dans le premier message par @ Justin-T). Ensuite, j'ai essayé avec
sqlite3 code> classe et ... hurray! Cela a fonctionné! P>
Vérifiez si votre installation PHP a activé des extensions pour SQLite et / ou SQLite3. p>
Je n'ai du mal à trouver un problème similaire pour constater qu'il a rejeté mon DSN parce que SQLite était désactivé. P>
Bon travail. Dès que je peux voter à nouveau, cela obtient un +1 de moi depuis que vous avez posté votre propre réponse!
@Matnadrofsky Merci pour cela et merci pour votre édition, j'apprécie aussi l'anglais correct aussi!
@Matnadrofsky Solution Publié, m'a finalement 2 jours de plus