1

我正在构建一个名为“能力”的应用程序。我对模型进行了更改,将应用程序迁移到本地,一切正常。这是我在应用程序上的第八次迁移。

我已经在 heroku 上部署了应用程序,所以我提交了更改并推送到了 heroku。我可以看到更改已经完成,因为新的迁移出现在 heroku 文件中。当我登录 heroku 并尝试迁移能力应用程序时,我收到以下错误:

NoMigrations: Application '<module 'django.contrib.admin' from '/app/.heroku/python/lib/python2.7/site-packages/django/contrib/admin/__init__.py'>' has no migrations.

我已经搜索过这个错误,但我没有发现任何有意义的东西。谁能建议我做错了什么,或者如何解决这个问题?

4

5 回答 5

0

我最近在将实时数据库转储到开发盒以测试数据迁移后遇到了这个错误。

依赖项之一是抛出此错误(特别是taggit)。我认为我有一个不同版本的taggiton the dev box 没有迁移,但是我转储的数据库有两个迁移taggitin south_migrationhistory

我删除了south_migrationhistory错误声明的问题应用程序中的条目NoMigrations,这解决了我的问题。一切又开始了。

于 2015-02-14T22:03:25.260 回答
0

django.contrib.admin不应该有迁移。Contrib 包不是南方管理的。

如果您曾经python manage.py schemamigration django.contrib.auth --XXX在本地运行过,它将在本地副本的 venv django 安装中创建迁移文件夹。但是,这永远不会转移到heroku。

为我测试一些东西。在本地计算机上创建站点的新副本

  • 新数据库
  • 新的虚拟环境
  • 带有 repo 新克隆的新文件夹

如果您遇到相同的错误,请尝试运行python manage.py migrate它的 b/c 您用南破坏了您的 virtualenv。

如果您的数据库模型自上次工作副本以来没有更改很多,您可以尝试其他方法:

  • 将您的模型回滚到最后的工作配置
  • 删除每个应用程序的迁移文件夹
  • 截断south_migrations
  • python manage.py schemamigration --initial X为您的每个应用程序运行。
  • 推和migrate --fake
  • 重做模型更改
  • 为模型更改创建迁移
  • 定期推送和迁移
于 2013-05-24T14:30:07.087 回答
0

除了上面发布的许多答案外,south.exceptions.NoMigrations由于目录更改,2014 年(Django 1.7)之后通常是例外migrations。该目录是 Django 内置迁移的默认目录。

对于南迁,目录为south_migrations. South>=1.0可以识别这一点并自动检测迁移。在 Django 文档中查看详细信息

在这种情况下,更新South

pip install -U South

或者您也可以在设置文件中指定迁移目录(对于每个安装的应用程序)。

于 2015-06-24T17:03:44.700 回答
0

我发现了一个奇怪的边缘案例,涉及 Kombu。

我在 Ubuntu 14.04 上维护一个遗留的 Django 1.5 项目,我以前有这个设置来让 Kombu 玩得很好:

SOUTH_MIGRATION_MODULES = {
    'kombu_transport_django': 'kombu.transport.django.south_migrations',
}

然而,在我升级到 Ubuntu 16 之后,Python 标准库中的一些小调整再次破坏了 Kombu。升级 Kombu 是唯一的直接解决方案,但这给了我另一个类似于 OP 发现的 Kombu 错误:

NoMigrations: Application '<module 'kombu.transport.django' from '/myproject/.env/local/lib/python2.7/site-packages/kombu/transport/django/__init__.pyc'>' has no migrations.

此错误消息几乎毫无价值,但我最终意识到问题出在我的 SOUTH_MIGRATION_MODULES 设置上。事实证明,旧的kombu.transport.django.south_migrations被删除了,South 试图导入这个丢失的迁移目录是导致错误的原因。解决方法是删除该行。

于 2016-11-01T20:45:31.620 回答
0

尝试pip install --upgrade django

如果您降级 Django 版本,通常会出现 NoMigrations 错误。

就我而言,我安装了一个包,它自动卸载了我当前的 Django 版本并安装了一个降级的包。

安装更新版本是一个快速修复。

此外,您可能需要检查您INSTALLED_APPS是否已包含所有应用程序,包括'django.contrib.auth''django.contrib.admin'

于 2016-11-16T02:31:48.743 回答