web-dev-qa-db-fra.com

Erreur lors de la création de nouveaux types de contenu. Veuillez vous assurer que les types de contenu sont migrés avant d'essayer de migrer les applications individuellement

J'essaie de migrer de Django 1.6 à Django 1.8. J'utilisais South pour gérer migrations dans Django 1.6. J'ai réussi à créer de nouveaux fichiers de migration par python manage.py makemigrations. en courant python manage.py migrate --fake-initial, Je reçois cette erreur

 Traceback (most recent call last):
  File "manage.py", line 39, in <module>
    execute_from_command_line(sys.argv)
  File "/home/jonty/.virtualenvs/squadrun/local/lib/python2.7/site-    packages/Django/core/management/__init__.py", line 338, in   execute_from_command_line
    utility.execute()
  File "/home/jonty/.virtualenvs/squadrun/local/lib/python2.7/site-  packages/Django/core/management/__init__.py", line 330, in execute
    self.fetch_command(subcommand).run_from_argv(self.argv)
  File "/home/jonty/.virtualenvs/squadrun/local/lib/python2.7/site-packages/Django/core/management/base.py", line 390, in run_from_argv
    self.execute(*args, **cmd_options)
  File "/home/jonty/.virtualenvs/squadrun/local/lib/python2.7/site-packages/Django/core/management/base.py", line 441, in execute
    output = self.handle(*args, **options)
  File "/home/jonty/.virtualenvs/squadrun/local/lib/python2.7/site-packages/Django/core/management/commands/migrate.py", line 225, in handle
    emit_post_migrate_signal(created_models, self.verbosity, self.interactive, connection.alias)
  File "/home/jonty/.virtualenvs/squadrun/local/lib/python2.7/site-packages/Django/core/management/sql.py", line 280, in emit_post_migrate_signal
using=db)
  File "/home/jonty/.virtualenvs/squadrun/local/lib/python2.7/site-packages/Django/dispatch/dispatcher.py", line 201, in send
response = receiver(signal=self, sender=sender, **named)
  File "/home/jonty/.virtualenvs/squadrun/local/lib/python2.7/site-packages/Django/contrib/auth/management/__init__.py", line 82, in create_permissions
    ctype = ContentType.objects.db_manager(using).get_for_model(klass)
  File "/home/jonty/.virtualenvs/squadrun/local/lib/python2.7/site-packages/Django/contrib/contenttypes/models.py", line 78, in get_for_model
    "Error creating new content types. Please make sure contenttypes "

L'un des fichiers de migration 0001_initial.py dit:

dependencies = [
    ('auth', '0006_require_contenttypes_0002'),
    ('clients', '0002_auto_20150428_1551'),
    ('players', '0001_initial'),
]

ce qui, je suppose, est particulièrement le problème. Quelle pourrait être la solution à ce problème. Toute aide serait appréciée.

35
Shubham

Je pense que cela a quelque chose à voir avec "La suppression de ContentType.name ", selon this . Mais cela ne fonctionne pas.

En supprimant manuellement la colonne name de la table 'Django_content_type'. Par exemple.

'ALTER TABLE Django_content_type DROP COLUMN name'

J'ai pu appliquer les migrations. Peut-être que cela peut vous aider un peu plus loin au moins.

44
Gelbander

Essayez de migrer d'abord l'application d'authentification, puis d'autres:

manage.py migrate auth
manage.py migrate <app_name>
17
Mojtaba Yousefi

Dans mon cas, ce que j'ai fait pour résoudre ce problème était la mise à jour vers une version plus récente de Django. Si vous travaillez avec Mac, faites simplement:

  1. pip install Django --upgrade
  2. python manage.py makemigrations
  3. migration de python manage.py
7
Taciana Cruz

Cela peut sembler étrange, mais j'ai corrigé cela en passant à Django version 1.8. Au départ, j'utilisais la version 1.7

3
Atul gupta

J'ai dû fusionner deux systèmes dans Django 1.9.1 et je n'ai tout simplement pas pu surmonter cette erreur:

 "Error creating new content types. Please make sure contenttypes "

La recherche étendue sur Google et le débordement des piles étaient vains. Enfin, j'ai ajouté la ligne de débogage à

~/.virtualenvs/(venv_name) /lib/python2.7/site-packages/Django/contrib/contenttypes/models.py

 except (OperationalError, ProgrammingError, IntegrityError):
        # It's possible to migrate a single app before contenttypes,
        # as it's not a required initial dependency (it's contrib!)
        # Have a Nice error for this.
        print "\n\nError for Content type model "+opts.model_name+"\n\n"
        raise RuntimeError(
            "Error creating new content types. Please make sure contenttypes "
            "is migrated before trying to migrate apps individually."
        )

Cela m'a dit les noms des modèles qui causaient l'erreur et ont finalement conduit au correctif.

J'utilise Postgres et les numéros de séquence des tables Django_content_type et auth_permission ne pointaient pas vers la fin de la table, provoquant l'échec des insertions.

Ces 2 lignes ont corrigé cela (sur la base de cette SO post )

SELECT pg_catalog.setval(pg_get_serial_sequence('Django_content_type', 'id'), (SELECT MAX(id) FROM Django_content_type)+1);
SELECT pg_catalog.setval(pg_get_serial_sequence('auth_permission', 'id'), (SELECT MAX(id) FROM auth_permission)+1);
2
MIkee

Pour ajouter au commentaire de @int_ua Ajoutez ceci en tant que dépendance à la migration qui échoue:

dependencies = [
    ('contenttypes', '0002_remove_content_type_name'),
]

Relancez ensuite la migration.

2
Ed J