Skip to content

Erreur lors d'une mise à jour Pod V4 (python3 manage.py migrate) #1377

@gmanaud

Description

@gmanaud

Bonjour,

Sur une instance de test de Pod v4 (neuve), je n'arrive pas à faire de mise à jour d'une version mineure à une autre (4.0.0 vers 4.0.1 par exemple).

J'ai une erreur avec les migrations flatpages :

$ python3 manage.py migrate
Operations to perform:
  Apply all migrations: admin, ai_enhancement, auth, authentication, authtoken, captcha, chapter, chunked_upload, completion, contenttypes, cut, django_cas_ng, dressing, enrichment, flatpages, hyperlinks, import_video, live, main, meeting, playlist, podfile, quiz, recorder, sessions, sites, speaker, thumbnail, video, video_encode_transcript, webpush
pre_migrate - Start save_previous_data
pre_migrate - save_previous_data --> OK
Start save_previous_data | playlists
(1054, "Unknown column 'title' in 'SELECT'")
(1146, "Table 'pod.playlist_playlistelement' doesn't exist")
(1146, "Table 'pod.favorite_favorite' doesn't exist")
save_previous_data --> OK | playlists
Running migrations:
  Applying flatpages.0002_flatpage_content_en_flatpage_content_fr_and_more...Traceback (most recent call last):
  File "/home/pod/.virtualenvs/django_pod4/lib/python3.12/site-packages/django/db/backends/utils.py", line 89, in _execute
    return self.cursor.execute(sql, params)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/pod/.virtualenvs/django_pod4/lib/python3.12/site-packages/django/db/backends/mysql/base.py", line 75, in execute
    return self.cursor.execute(query, args)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/pod/.virtualenvs/django_pod4/lib/python3.12/site-packages/MySQLdb/cursors.py", line 179, in execute
    res = self._query(mogrified_query)
          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/pod/.virtualenvs/django_pod4/lib/python3.12/site-packages/MySQLdb/cursors.py", line 330, in _query
    db.query(q)
  File "/home/pod/.virtualenvs/django_pod4/lib/python3.12/site-packages/MySQLdb/connections.py", line 280, in query
    _mysql.connection.query(self, query)
MySQLdb.OperationalError: (1060, "Duplicate column name 'content_en'")

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

Traceback (most recent call last):
  File "/usr/local/django_projects/podv4/manage.py", line 39, in <module>
    execute_from_command_line(sys.argv)
  File "/home/pod/.virtualenvs/django_pod4/lib/python3.12/site-packages/django/core/management/__init__.py", line 442, in execute_from_command_line
    utility.execute()
  File "/home/pod/.virtualenvs/django_pod4/lib/python3.12/site-packages/django/core/management/__init__.py", line 436, in execute
    self.fetch_command(subcommand).run_from_argv(self.argv)
  File "/home/pod/.virtualenvs/django_pod4/lib/python3.12/site-packages/django/core/management/base.py", line 412, in run_from_argv
    self.execute(*args, **cmd_options)
  File "/home/pod/.virtualenvs/django_pod4/lib/python3.12/site-packages/django/core/management/base.py", line 458, in execute
    output = self.handle(*args, **options)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/pod/.virtualenvs/django_pod4/lib/python3.12/site-packages/django/core/management/base.py", line 106, in wrapper
    res = handle_func(*args, **kwargs)
          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/pod/.virtualenvs/django_pod4/lib/python3.12/site-packages/django/core/management/commands/migrate.py", line 356, in handle
    post_migrate_state = executor.migrate(
                         ^^^^^^^^^^^^^^^^^
  File "/home/pod/.virtualenvs/django_pod4/lib/python3.12/site-packages/django/db/migrations/executor.py", line 135, in migrate
    state = self._migrate_all_forwards(
            ^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/pod/.virtualenvs/django_pod4/lib/python3.12/site-packages/django/db/migrations/executor.py", line 167, in _migrate_all_forwards
    state = self.apply_migration(
            ^^^^^^^^^^^^^^^^^^^^^
  File "/home/pod/.virtualenvs/django_pod4/lib/python3.12/site-packages/django/db/migrations/executor.py", line 252, in apply_migration
    state = migration.apply(state, schema_editor)
            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/pod/.virtualenvs/django_pod4/lib/python3.12/site-packages/django/db/migrations/migration.py", line 132, in apply
    operation.database_forwards(
  File "/home/pod/.virtualenvs/django_pod4/lib/python3.12/site-packages/django/db/migrations/operations/fields.py", line 108, in database_forwards
    schema_editor.add_field(
  File "/home/pod/.virtualenvs/django_pod4/lib/python3.12/site-packages/django/db/backends/mysql/schema.py", line 107, in add_field
    super().add_field(model, field)
  File "/home/pod/.virtualenvs/django_pod4/lib/python3.12/site-packages/django/db/backends/base/schema.py", line 713, in add_field
    self.execute(sql, params)
  File "/home/pod/.virtualenvs/django_pod4/lib/python3.12/site-packages/django/db/backends/base/schema.py", line 201, in execute
    cursor.execute(sql, params)
  File "/home/pod/.virtualenvs/django_pod4/lib/python3.12/site-packages/django/db/backends/utils.py", line 102, in execute
    return super().execute(sql, params)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/pod/.virtualenvs/django_pod4/lib/python3.12/site-packages/django/db/backends/utils.py", line 67, in execute
    return self._execute_with_wrappers(
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/pod/.virtualenvs/django_pod4/lib/python3.12/site-packages/django/db/backends/utils.py", line 80, in _execute_with_wrappers
    return executor(sql, params, many, context)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/pod/.virtualenvs/django_pod4/lib/python3.12/site-packages/django/db/backends/utils.py", line 84, in _execute
    with self.db.wrap_database_errors:
  File "/home/pod/.virtualenvs/django_pod4/lib/python3.12/site-packages/django/db/utils.py", line 91, in __exit__
    raise dj_exc_value.with_traceback(traceback) from exc_value
  File "/home/pod/.virtualenvs/django_pod4/lib/python3.12/site-packages/django/db/backends/utils.py", line 89, in _execute
    return self.cursor.execute(sql, params)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/pod/.virtualenvs/django_pod4/lib/python3.12/site-packages/django/db/backends/mysql/base.py", line 75, in execute
    return self.cursor.execute(query, args)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/pod/.virtualenvs/django_pod4/lib/python3.12/site-packages/MySQLdb/cursors.py", line 179, in execute
    res = self._query(mogrified_query)
          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/pod/.virtualenvs/django_pod4/lib/python3.12/site-packages/MySQLdb/cursors.py", line 330, in _query
    db.query(q)
  File "/home/pod/.virtualenvs/django_pod4/lib/python3.12/site-packages/MySQLdb/connections.py", line 280, in query
    _mysql.connection.query(self, query)
django.db.utils.OperationalError: (1060, "Duplicate column name 'content_en'")

La migration ne semble pas effectuée, et pourtant le schéma de la table semble correspondre à ce qui est attendu après :

$ python3 manage.py showmigrations flatpages
flatpages
 [X] 0001_initial
 [ ] 0002_flatpage_content_en_flatpage_content_fr_and_more
DESCRIBE django_flatpage;
+-----------------------+--------------+------+-----+---------+----------------+
| Field                 | Type         | Null | Key | Default | Extra          |
+-----------------------+--------------+------+-----+---------+----------------+
| id                    | int(11)      | NO   | PRI | NULL    | auto_increment |
| url                   | varchar(100) | NO   | MUL | NULL    |                |
| title                 | varchar(200) | NO   |     | NULL    |                |
| title_fr              | varchar(200) | YES  |     | NULL    |                |
| title_en              | varchar(200) | YES  |     | NULL    |                |
| content               | longtext     | NO   |     | NULL    |                |
| content_fr            | longtext     | YES  |     | NULL    |                |
| content_en            | longtext     | YES  |     | NULL    |                |
| enable_comments       | tinyint(1)   | NO   |     | NULL    |                |
| template_name         | varchar(70)  | NO   |     | NULL    |                |
| registration_required | tinyint(1)   | NO   |     | NULL    |                |
+-----------------------+--------------+------+-----+---------+----------------+

Contenu du fichier .virtualenvs/django_pod4/lib/python3.12/site-packages/django/contrib/flatpages/migrations/0002_flatpage_content_en_flatpage_content_fr_and_more.py

# Generated by Django 4.2.26 on 2025-11-13 12:33

from django.db import migrations, models


class Migration(migrations.Migration):

    dependencies = [
        ('flatpages', '0001_initial'),
    ]

    operations = [
        migrations.AddField(
            model_name='flatpage',
            name='content_en',
            field=models.TextField(blank=True, null=True, verbose_name='content'),
        ),
        migrations.AddField(
            model_name='flatpage',
            name='content_fr',
            field=models.TextField(blank=True, null=True, verbose_name='content'),
        ),
        migrations.AddField(
            model_name='flatpage',
            name='title_en',
            field=models.CharField(max_length=200, null=True, verbose_name='title'),
        ),
        migrations.AddField(
            model_name='flatpage',
            name='title_fr',
            field=models.CharField(max_length=200, null=True, verbose_name='title'),
        ),
    ]

Savez-vous d'où peut venir le problème et comment le corriger ?

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions