Résolue

Erreur migration

# Bases de données # Django # Migrations

Bonjour, j''ai cette erreur quand j'essaie de faire mes migrations, pourtant j'ai activé les droits sur la base de donnée.



chris@LAPTOP-TDD8HGBK MINGW64 ~/docstring/django/projets/blog/src
$ python manage.py migrate
Operations to perform:
  Apply all migrations: admin, auth, contenttypes, sessions
Running migrations:
Traceback (most recent call last):
  File "C:\Users\chris\docstring\django\projets\blog\.env\Lib\site-packages\django\db\backends\utils.py", line 87, in _execute
    return self.cursor.execute(sql)
           ^^^^^^^^^^^^^^^^^^^^^^^^
psycopg2.errors.InsufficientPrivilege: ERREUR:  droit refusé pour le schéma public
LINE 1: CREATE TABLE "django_migrations" ("id" bigint NOT NULL PRIMA...
                     ^


The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "C:\Users\chris\docstring\django\projets\blog\.env\Lib\site-packages\django\db\migrations\recorder.py", line 70, in ensure_schema
    editor.create_model(self.Migration)
  File "C:\Users\chris\docstring\django\projets\blog\.env\Lib\site-packages\django\db\backends\base\schema.py", line 447, in create_model
    self.execute(sql, params or None)
  File "C:\Users\chris\docstring\django\projets\blog\.env\Lib\site-packages\django\db\backends\base\schema.py", line 199, in execute
    cursor.execute(sql, params)
  File "C:\Users\chris\docstring\django\projets\blog\.env\Lib\site-packages\django\db\backends\utils.py", line 103, in execute
    return super().execute(sql, params)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\chris\docstring\django\projets\blog\.env\Lib\site-packages\django\db\backends\utils.py", line 67, in execute
    return self._execute_with_wrappers(
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\chris\docstring\django\projets\blog\.env\Lib\site-packages\django\db\backends\utils.py", line 80, in _execute_with_wrappers
    return executor(sql, params, many, context)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\chris\docstring\django\projets\blog\.env\Lib\site-packages\django\db\backends\utils.py", line 84, in _execute
    with self.db.wrap_database_errors:
  File "C:\Users\chris\docstring\django\projets\blog\.env\Lib\site-packages\django\db\utils.py", line 91, in __exit__
    raise dj_exc_value.with_traceback(traceback) from exc_value
  File "C:\Users\chris\docstring\django\projets\blog\.env\Lib\site-packages\django\db\backends\utils.py", line 87, in _execute
    return self.cursor.execute(sql)
           ^^^^^^^^^^^^^^^^^^^^^^^^
django.db.utils.ProgrammingError: ERREUR:  droit refusé pour le schéma public
LINE 1: CREATE TABLE "django_migrations" ("id" bigint NOT NULL PRIMA...
                     ^


During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "C:\Users\chris\docstring\django\projets\blog\.env\Lib\site-packages\django\db\migrations\executor.py", line 107, in migrate
    self.recorder.ensure_schema()
  File "C:\Users\chris\docstring\django\projets\blog\.env\Lib\site-packages\django\db\migrations\recorder.py", line 72, in ensure_schema
    raise MigrationSchemaMissing(
django.db.migrations.exceptions.MigrationSchemaMissing: Unable to create the django_migrations table (ERREUR:  droit refusé pour le schéma public
LINE 1: CREATE TABLE "django_migrations" ("id" bigint NOT NULL PRIMA...
                     ^
)


liste bases de données:

postgres=# \l
                                                         Liste des bases de donnÚes
    Nom    | PropriÚtaire | Encodage |  Collationnement   |    Type caract.    | Locale ICU | Fournisseur de locale |     Droits d'accÞs
-----------+--------------+----------+--------------------+--------------------+------------+-----------------------+------------------------
 blog      | postgres     | UTF8     | French_France.1252 | French_France.1252 |            | libc                  | =Tc/postgres          +
           |              |          |                    |                    |            |                       | postgres=CTc/postgres +
           |              |          |                    |                    |            |                       | blogadmin=CTc/postgres
 postgres  | postgres     | UTF8     | French_France.1252 | French_France.1252 |            | libc                  |
 template0 | postgres     | UTF8     | French_France.1252 | French_France.1252 |            | libc                  | =c/postgres           +
           |              |          |                    |                    |            |                       | postgres=CTc/postgres
 template1 | postgres     | UTF8     | French_France.1252 | French_France.1252 |            | libc                  | =c/postgres           +
           |              |          |                    |                    |            |                       | postgres=CTc/postgres
(4 lignes)


Je ne comprend pas d'où viens le problème.

Thibault houdon

Mentor

Bonjour Christian,


J'ai vu le même problème récemment avec un autre étudiant, il faut que je vérifie mais je crois qu'il peut s'agir d'un problème lié à la dernière version de Django (4).


J'avais réussi à résoudre le problème avec ces deux lignes de SQL :


GRANT ALL ON SCHEMA public TO your_user;
GRANT ALL ON SCHEMA public TO public;


Pensez bien à remplacer "your_user" par le nom d'utilisateur que vous avez choisi pour gérer votre base de données.

Je vies de tester les 2 lignes SQL ça ne change rien au moment ou je fais migrate

Thibault houdon

Mentor

Tu as lancé ton terminal en tant qu'administrateur aussi ?

Oui, du coup quest-ce que je peut faire ? recommencer avec une version anterieure de django ?

Thibault houdon

Mentor

Oui, essaie effectivement de revenir à la version 3.2 pour voir déjà si c'est ça le problème.


pip install Django==3.2

J'ai trouvé, il fallait ecrire les 2 lignes que tu as rajouté dans directement en étant connecté a la base de donnée blog

Ah j'au eu le mm problème c'est résolu du coup de mon côté aussi :)


EDIT, mince j'ai re ouvert la question je pensais qu'elle serait tjs en terminé.

Thibault tu peux la mettre en statut résolu dsl de l'avoir re ouverte ^^


merci

Bonjour,
J'ai rencontré le soucis lié au droit que l'on fait : "psycopg2.errors.InsufficientPrivilege:...........".
J'ai fait plusieurs manip via la console psql pour éssayer d'élever les privilèges etc....sans succès.
Le plus simple est de passer par l'application pgadmin pour gérer cela sur le user docuser :
ouvrir l'applicatif> aller sur le login/group > aller sur l'utilisateur docuser et faire un clic droit>Sélectionner properties
aller sur l'onglet privilege > cliquer sur superutilisateur (les autres droits liés vont être activés).

Enregistrer.
Aller sur le terminal et lancer la commande de migration python manage.py migrate , la commande est bien passé:

au cas où, mes précédentes actions faites:

Inscris-toi

(c'est gratuit !)

Inscris-toi

Tu dois créer un compte pour participer aux discussions.

Créer un compte

Rechercher sur le site

Formulaire de contact

Inscris-toi à Docstring

Pour commencer ton apprentissage.

Tu as déjà un compte ? Connecte-toi.