12
votes

Django Débutant Problème: gérer.py dbsync

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 : xxx p> fais personne avoir un indice sur mon problème?


0 commentaires

9 Réponses :


9
votes

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 xxx

au lieu de cela, fonctionne-t-il?


0 commentaires

21
votes

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


1 commentaires

C'est presque toujours le problème. Python ne fait pas d'expansion du chemin quand il les lit.



5
votes

pour l'amour de Google:

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.


1 commentaires

N'est-ce pas ce que Josefassad a suggéré dans leur réponse ?



3
votes

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 dans les paramètres mais le dossier / db /


0 commentaires

17
votes

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 :

Si vous commencez votre Projet en exécutant: xxx

Votre structure de dossier sera comme ceci:

  • / chemin / à / épic_project /
    • gérer.py
    • épic_project /
      • paramètres.py

        Si alors dans vos paramètres.py Vous définissez votre base de données comme suit: xxx

        quand xxx

        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"


1 commentaires

plus 1 pour l'humour



0
votes

Semblable à la réponse de l'utilisateur104264 - Différente perspective ...

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

(DJANGO-V) ... chemin vers Virtual env Proector ... / Django_Project /> Python Manage.py Syncdb

Créé ... Path to Virtual env Proector ... / django_project / stockage.db

-bill


0 commentaires

0
votes

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. xxx


3 commentaires

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'


@Tom il ne signifie pas une expression régulière. Il dit à Python de le traiter comme un Literal de chaîne brut : Stackoverflow.com/a/2081708/2259303


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.




2
votes

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> xxx pré>

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> xxx pré>

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('\\', '/'))


0 commentaires