Je cours Ubuntu 9.04 32b et j'ai reçu Django de Synaptics. Mon paramètre.py est configuré pour une base de données SQLITE3.
J'ai traversé ce Didacticiel et obtenu l'erreur suivante lors de la tentative d'exécution de la commande python manage.py syncdb code>: p>
9 Réponses :
Peut-être un problème d'autorisation, votre utilisateur a-t-il suffisamment de droit d'écrire sur le dossier? Par exemple, si vous faites au lieu de cela, fonctionne-t-il? p> p>
in paramètres.py utilisez-vous un chemin relatif vers le fichier SQLite?
Si vous êtes, essayez de changer cela à un chemin absolu. P>
I.e. Au lieu de: P>
/home/user/project/mydata.db
C'est presque toujours le problème. Python ne fait pas d'expansion du chemin quand il les lit.
pour l'amour de Google: P>
Le chemin d'accès à la base de données doit être le chemin complet du fichier --- Non seulement le répertoire où le fichier vit. p>
N'est-ce pas ce que Josefassad a suggéré dans leur réponse ?
J'avais le même problème sur Windows puis réalisé que Syncdb ne créerait pas le dossier spécifié s'il n'existait pas déjà. J'avais spécifié C: /mysite/db/sqlite3.db code> dans les paramètres mais le dossier / db / < Créé dans le terminal puis re-Ran Syncdb avec succès. P>
Cela peut également se produire si votre nom de base de données est identique au nom de votre projet. Pour résoudre ce problème, changez simplement le nom de votre DB E.G. en ajoutant un .db au nom. Donc, si votre nom de base de données dans Paramètres.py était 'épic_project' le changer sur 'épic_project.db'
Explication longue et ennuyeuse forte>: p> Si vous commencez votre Projet en exécutant: p> Votre structure de dossier sera comme ceci: p> Si alors dans vos paramètres.py Vous définissez votre base de données comme suit: p> quand p> Exécute qu'il essaie d'ouvrir ou de créer un fichier sqlite db sur / path / to / to epic_project / épic_project, mais il y a un répertoire là-bas, il est donc dit "OH OK, le chemin existe déjà, ouvre-le comme une DB SQLite", malheureusement Pour SQLite, c'est un répertoire et non un dB, donc il pleure et Django présente ces larmes comme "SQLite3.OperationRor: impossible d'ouvrir le fichier de base de données" p> p>
plus 1 pour l'humour
Semblable à la réponse de l'utilisateur104264 - Différente perspective ... P>
Après la suite du tutoriel YouTube J'ai eu la même erreur. On me semble en cours d'exécution du répertoire de projet virtualenv django ... chemin vers Virtual env ... / django_project /, le nom de la base de données à l'intérieur /myapp/settings.py était simplement "stockage.db" alors p >
(DJANGO-V) ... chemin vers Virtual env Proector ... / Django_Project /> Python Manage.py Syncdb P>
Créé ... Path to Virtual env Proector ... / django_project / stockage.db p>
-bill p>
Si vous spécifiez un chemin complet sur le fichier dB et que vous avez toujours des problèmes, essayez de mettre un R avant la chaîne.
IE.
p>
Cela signifie une expression régulière, mais le problème que vous résolvez est le fait que Python n'aime pas les barres obliques simples. Vous seriez mieux avec 'c: \\ home \\ usr \\ mysite \\ sqlite3.db' code>
@Tom il ne signifie pas une expression régulière. Il dit à Python de le traiter comme un Literal de chaîne brut i>: Stackoverflow.com/a/2081708/2259303 a>
Duh, mon mauvais. 99% du temps que j'utilise, c'est pour les URL de Django, donc je l'ai coincé dans ma tête de cette façon. Pardon.
Le problème que je rencontrais était un problème de bootstrapping où certaines recherches de modèle étaient effectuées à l'importation (en dehors de toute classe ou de toute fonction). par the Docs , c'est un mauvais idée. p>
J'ai eu le même problème il y a deux jours. Je l'ai résolu en définissant le "nom" dans le dictionnaire de base de données (Paramètres.py) sur le chemin absolu. Par exemple.
paramètres.py p> ici Vous pouvez définir la base de données_path en haut des paramètres.py en tant que telle
(Je ne sais pas si cela fonctionnera pour Windows) p> pour Windows, vous devrez peut-être utiliser la méthode de remplacement. (Pas sûr .. Mais vous pouvez l'essayer comme suit) P> PROJECT_PATH = os.path.abspath(os.path.join(SETTINGS_DIR, os.pardir).replace('\\', '/'))