Django 1.8 到 1.9 迁移升级问题

Django 1.8 到 1.9 迁移升级问题

刚刚安装了 Django 1.9,并尝试升级我的 1.8 应用程序。在尝试仔细遵循发行说明后,我仍然得到以下跟踪(见下文)。

我认为这与迁移有关,但清空迁移文件夹没有任何效果。

有人能指出我所缺少内容的链接吗?

Performing system checks...

System check identified no issues (0 silenced).
Unhandled exception in thread started by <function wrapper at 0x9757454>
Traceback (most recent call last):
  File "/usr/local/lib/python2.7/dist-packages/django/utils/autoreload.py", line 226, in wrapper
    fn(*args, **kwargs)
  File "/usr/local/lib/python2.7/dist-packages/django/core/management/commands/runserver.py", line 124, in inner_run
    self.check_migrations()
  File "/usr/local/lib/python2.7/dist-packages/django/core/management/base.py", line 448, in check_migrations
    executor = MigrationExecutor(connections[DEFAULT_DB_ALIAS])
  File "/usr/local/lib/python2.7/dist-packages/django/db/migrations/executor.py", line 20, in __init__
    self.loader = MigrationLoader(self.connection)
  File "/usr/local/lib/python2.7/dist-packages/django/db/migrations/loader.py", line 52, in __init__
    self.build_graph()
  File "/usr/local/lib/python2.7/dist-packages/django/db/migrations/loader.py", line 197, in build_graph
    self.load_disk()
  File "/usr/local/lib/python2.7/dist-packages/django/db/migrations/loader.py", line 115, in load_disk
    app_config.label,
TypeError: object.__new__() takes no parameters

答案1

我找到了解决方案。

我安装了 South,其中包含旧版本的 Migrate 类。它不是 INSTALLED_APP settings.py。但是,我确实安装了 django-extensions。这个旧版本引用了 South,它引入了 South 版本的 Migrate,而不是新的 django 版本。

解决方案是“sudo pip uninstall south”和“sudo pip install django-extensions --upgrade”。

全部修复。

诀窍是使用“inspect”模块打印出 loader.py 中失败的类和父类的文件名:

            import inspect
            print( '****', inspect.getfile(migration_module.Migration) )
            print( '********', inspect.getfile(inspect.getmro(migration_module.Migration)[1]) )

这很快就表明 loader.py 获取了错误版本的 Migrate。

相关内容