Domanda

Sto seguendo il tutorial sul sito DJango, che in precedenza ho fatto usando Windows XP e tutto è andato bene, ma su Windows 7 ottengo il seguente errore:

sqlite3.OperationalError: unable to open database file

Uso quanto segue:

python manage.py sql Blog

Qualcuno ha qualche idea di cosa potrebbe essere sbagliato. Il file del database si trova in C:\Software\Sqlite\D Database\Blog.db

E il relativo settings.py o la sezione di è semplicemente:

DATABASE_ENGINE = 'sqlite3'           # 'postgresql_psycopg2', 'postgresql', 'mysql', 'sqlite3' or 'oracle'.
DATABASE_NAME = 'C:\Software\Sqlite\databases\blog.db'             # Or path to database file if using sqlite3.
DATABASE_USER = ''             # Not used with sqlite3.
DATABASE_PASSWORD = ''         # Not used with sqlite3.
DATABASE_HOST = ''             # Set to empty string for localhost. Not used with sqlite3.
DATABASE_PORT = ''             # Set to empty string for default. Not used with

A scopo di test ho anche aggiunto tutti con autorizzazioni complete.

Ma come ho detto ottengo il seguente errore:

<*>

Qualsiasi aiuto è apprezzato

Andrew

È stato utile?

Soluzione

Non credo che tu possa usare un percorso completo di Windows per accedere al tuo database sqlite. Ho eseguito alcuni test qui e l'unico modo per utilizzare un database sqlite3 su django non nella stessa directory del progetto era utilizzare DATABASE_NAME = '../anotherfolder/db.db' (questo si trovava in c: \ anotherfolder \ e il progetto si trovava in c: \ mydjangoproject)

Altri suggerimenti

So che questa domanda ha già una risposta accettata, ma penso che ti sia perso qualcosa. È necessario utilizzare stringhe non elaborate quando le stringhe contengono barre rovesciate:

DATABASE_NAME = r'C:\Software\Sqlite\databases\blog.db' 

Questo è ciò che accade se non si utilizza una stringa non elaborata:

>>> print 'C:\Software\Sqlite\databases\blog.db'
C:\Software\Sqlite\databaselog.db

Un'ipotesi è che il file non si trovi effettivamente in quella directory. Se hai abilitato UAC, Windows 7 farà sembrare che il file si trovi in ??quella posizione (verrà mostrato in Windows Explorer). Tuttavia, il file è realmente archiviato in c: \ utenti \ nomeutente \ AppData \ Local \ VirtualStore \ Software \ Sqlite \ database o in una posizione simile.

Dai un'occhiata alle autorizzazioni della cartella. Il tuo utente normale può modificare i file lì?

Invertire le barre in DATABASE_NAME: da C: \ Software \ Sqlite \ d Database \ blog.db a C: /Software/Sqlite/databases/blog.db

Sto usando django 1.4 su Win7 e questa è stata la soluzione per me - il file non deve esistere già

L'inversione delle barre nel nome del database ha risolto il problema per me.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top