Projet

Général

Profil

Bug #48090

v2.78-1~eob90+1 - Migrations manquantes ?

Ajouté par Benjamin Renard il y a plus de 3 ans. Mis à jour il y a plus de 3 ans.

Statut:
En cours
Priorité:
Normal
Assigné à:
-
Catégorie:
-
Version cible:
-
Début:
28 octobre 2020
Echéance:
% réalisé:

0%

Temps estimé:
Patch proposed:
Non
Planning:
Non

Description

Suite à une mise à jour en v2.78-1~eob90+1 d'Authentic (sur une stretch), un authentic2-manage migrate me retourne des migrations manquantes :

root@gavotte-pp~# authentic2-manage migrate
Operations to perform:
  Apply all migrations: a2_rbac, admin, attribute_aggregator, auth, authentic2, authentic2_auth_fc, authentic2_auth_oidc, authentic2_idp_cas, authentic2_idp_oidc, contenttypes, custom_user, django_rbac, idp, journal, mellon, nonce, saml, sessions
Running migrations:
  No migrations to apply.
  Your models have changes that are not yet reflected in a migration, and so won't be applied.
  Run 'manage.py makemigrations' to make new migrations, and then re-run 'manage.py migrate' to apply them.
root@gavotte-pp~# authentic2-manage makemigrations --dry-run -v 3
Migrations for 'auth':
  /usr/lib/python3/dist-packages/authentic2/auth_migrations_18/0006_auto_20201028_1100.py
    - Alter field content_type on permission
    - Alter field username on user
    - Alter unique_together for permission (1 constraint(s))
Full migrations file '0006_auto_20201028_1100.py':
# -*- coding: utf-8 -*-
# Generated by Django 1.11.20 on 2020-10-28 10:00
from __future__ import unicode_literals

import django.contrib.auth.validators
from django.db import migrations, models
import django.db.models.deletion

class Migration(migrations.Migration):

    dependencies = [
        ('contenttypes', '0002_remove_content_type_name'),
        ('auth', '0005_auto_20150526_2303'),
    ]

    operations = [
        migrations.AlterField(
            model_name='permission',
            name='content_type',
            field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='contenttypes.ContentType', verbose_name='content type'),
        ),
        migrations.AlterField(
            model_name='user',
            name='username',
            field=models.CharField(error_messages={'unique': 'A user with that username already exists.'}, help_text='Required. 150 characters or fewer. Letters, digits and @/./+/-/_ only.', max_length=150, unique=True, validators=[django.contrib.auth.validators.UnicodeUsernameValidator()], verbose_name='username'),
        ),
        migrations.AlterUniqueTogether(
            name='permission',
            unique_together=set([('content_type', 'codename')]),
        ),
    ]

Migrations for 'admin':
  /usr/lib/python3/dist-packages/django/contrib/admin/migrations/0003_auto_20201028_1100.py
    - Alter field user on logentry
Full migrations file '0003_auto_20201028_1100.py':
# -*- coding: utf-8 -*-
# Generated by Django 1.11.20 on 2020-10-28 10:00
from __future__ import unicode_literals

from django.conf import settings
from django.db import migrations, models
import django.db.models.deletion

class Migration(migrations.Migration):

    dependencies = [
        ('admin', '0002_logentry_remove_auto_add'),
    ]

    operations = [
        migrations.AlterField(
            model_name='logentry',
            name='user',
            field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL, verbose_name='user'),
        ),
    ]

root@gavotte-pp~# dpkg -l authentic2
Desired=Unknown/Install/Remove/Purge/Hold
| Status=Not/Inst/Conf-files/Unpacked/halF-conf/Half-inst/trig-aWait/Trig-pend
|/ Err?=(none)/Reinst-required (Status,Err: uppercase=bad)
||/ Name                                                  Version                         Architecture                    Description
+++-=====================================================-===============================-===============================-===============================================================================================================
ii  authentic2                                            2.78-1~eob90+1                  all                             Versatile identity server Python module

Note : J'ai sur cette machine un problème de longue date au sujet de migration locale dont je cherche à me débarrasser(cf. #45977). J'essaye de faire la part des choses entre migrations manquantes dans la version courante et conflit avec des migrations locales passées.


Demandes liées

Lié à Authentic 2 - Development #48906: misc : virer les références restantes aux modules dashboard et menuFermé27 novembre 2020

Actions
Lié à Authentic 2 - Bug #48902: crash sur redemarrage a2 multitenant après mise à jour du SaaSNouveau27 novembre 2020

Actions

Historique

#1

Mis à jour par Paul Marillonnet il y a plus de 3 ans

J'ai effectivement, à l'exécution du makemigrations les deux migrations que tu mentionnes dans la description du ticket. Je ne sais pas si c’est un oubli, je vais regarder ça.

#2

Mis à jour par Paul Marillonnet il y a plus de 3 ans

  • Statut changé de Nouveau à En cours
#3

Mis à jour par Paul Marillonnet il y a plus de 3 ans

Et le premier migrate_schemas se passe bien mais au second ce n’est plus la même chanson :

 SET CONSTRAINTS "django_admin_log_user_id_c564eba6_fk_custom_user_user_id" IMMEDIATE; ALTER TABLE "django_admin_log" DROP CONSTRAINT "django_admin_log_user_id_c564eba6_fk_custom_user_user_id"; (params ())
ALTER TABLE "django_admin_log" ADD CONSTRAINT "django_admin_log_user_id_c564eba6_fk_custom_user_user_id" FOREIGN KEY ("user_id") REFERENCES "custom_user_user" ("id") DEFERRABLE INITIALLY DEFERRED; (params ())
SET CONSTRAINTS "auth_permission_content_type_id_2f476e4b_fk_django_co" IMMEDIATE; ALTER TABLE "auth_permission" DROP CONSTRAINT "auth_permission_content_type_id_2f476e4b_fk_django_co"; (params ())
ALTER TABLE "auth_permission" ADD CONSTRAINT "auth_permission_content_type_id_2f476e4b_fk_django_co" FOREIGN KEY ("content_type_id") REFERENCES "django_content_type" ("id") DEFERRABLE INITIALLY DEFERRED; (params ())
ALTER TABLE "auth_permission" ADD CONSTRAINT "auth_permission_content_type_id_codename_01ab375a_uniq" UNIQUE ("content_type_id", "codename"); (params ())
Traceback (most recent call last):
  File "/home/paul/envs/publik-env-py3/lib/python3.8/site-packages/django/db/backends/utils.py", line 64, in execute
    return self.cursor.execute(sql, params)
psycopg2.errors.DuplicateTable: ERREUR:  la relation « auth_permission_content_type_id_codename_01ab375a_uniq » existe déjà

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

Traceback (most recent call last):
  File "/home/paul/src/authentic/authentic2-ctl", line 21, in <module>
    execute_from_command_line(sys.argv[:1] + argv)
  File "/home/paul/envs/publik-env-py3/lib/python3.8/site-packages/django/core/management/__init__.py", line 364, in execute_from_command_line
    utility.execute()
  […]
  File "/home/paul/envs/publik-env-py3/lib/python3.8/site-packages/django/db/backends/utils.py", line 64, in execute
    return self.cursor.execute(sql, params)
  File "/home/paul/envs/publik-env-py3/lib/python3.8/site-packages/django/db/utils.py", line 94, in __exit__
    six.reraise(dj_exc_type, dj_exc_value, traceback)
  File "/home/paul/envs/publik-env-py3/lib/python3.8/site-packages/django/utils/six.py", line 685, in reraise
    raise value.with_traceback(tb)
  File "/home/paul/envs/publik-env-py3/lib/python3.8/site-packages/django/db/backends/utils.py", line 64, in execute
    return self.cursor.execute(sql, params)
django.db.utils.ProgrammingError: ERREUR:  la relation « auth_permission_content_type_id_codename_01ab375a_uniq » existe déjà

#4

Mis à jour par Benjamin Dauvergne il y a plus de 3 ans

Il faut supprimer notre surcharge des migrations des applications Django user et admin :

MIGRATION_MODULES = {
    'auth': 'authentic2.auth_migrations_18',
    'menu': 'authentic2.menu_migrations',
    'dashboard': 'authentic2.dashboard_migrations',
}

au passage on peut virer directement dashbord qui n'est plus utilisé depuis un moment (ça vient de django-admin-tools).

#5

Mis à jour par Paul Marillonnet il y a plus de 3 ans

Benjamin Dauvergne a écrit :

Il faut supprimer notre surcharge des migrations des applications Django user et admin :
[...]

Pas pigé ce qui fait que ça casse au second migrate_schemas.

Tu veux dire par là que remettre dans custom_user/migrations les migrations relatives à auth et user de authentic2.auth_migrations_18, puis supprimer la surcharge, viendrait résoudre ce bogue ?

#6

Mis à jour par Paul Marillonnet il y a plus de 3 ans

  • Lié à Development #48906: misc : virer les références restantes aux modules dashboard et menu ajouté
#7

Mis à jour par Paul Marillonnet il y a plus de 3 ans

  • Lié à Bug #48902: crash sur redemarrage a2 multitenant après mise à jour du SaaS ajouté

Formats disponibles : Atom PDF