【问题标题】:Django south not applying database migrationDjango south 未应用数据库迁移
【发布时间】:2014-08-11 13:09:25
【问题描述】:

我对我的 model.py 文件进行了一些更改...我添加了另一个字段 (fds_name):

from django.db import models

class funds(models.Model):
    fds_symbol  = models.CharField(max_length=5)
    fds_name  = models.CharField(max_length=128)

我运行了 South 模式迁移命令,它检测到更改并进行了迁移:

/var/www/finance/finance-env/bin/python3 manage.py schemamigration corefinance --auto
tail corefinance/migrations/0002_auto__add_funds.py
        models = {
            'corefinance.funds': {
                'Meta': {'object_name': 'funds'},
                'fds_name': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
                'fds_symbol': ('django.db.models.fields.CharField', [], {'max_length': '5'}),
                'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'})
            }
        }

        complete_apps = ['corefinance']

但是,当我运行迁移时,它说没有要迁移的内容,我可以看到数据库仍然缺少新字段。

/var/www/finance/finance-env/bin/python3 manage.py migrate corefinance
Running migrations for corefinance:
- Nothing to migrate.
 - Loading initial data for corefinance.
Installed 0 object(s) from 0 fixture(s)

【问题讨论】:

    标签: python django django-south


    【解决方案1】:

    这可能是因为在--initial 迁移和下一个模式迁移之间,您必须将实际迁移持久化到发出命令python manage.py migrate corefinance 的数据库。

    在完成第一次迁移之后,您可以添加另一个字段,执行架构迁移 --auto 并通过执行 python manage.py migrate corefinance 再次将其提交到数据库

    【讨论】:

    • 我确实看到了您的其他答案,但我很确定我确实运行了该命令:/var/www/finance/finance-env/bin/python3 manage.py migrate corefinance
    • ok 删除 corefinance 中的迁移文件夹,并从南表中删除最后创建的行 (0002_auto__add_funds) 并再次运行初始迁移,然后迁移它。
    • 谢谢,这行得通,但我必须在迁移运行之前删除资金表。如果资金表中有重要数据,将来会发生什么?
    • 你应该看到这个stackoverflow.com/questions/4625712/…
    【解决方案2】:

    这个解决方案比 dhana 的答案有点复杂,但它有效。您可以通过数据库管理界面手动更改数据库架构,然后运行a fake migration。通过这样做,Django 会认为 schemamigration 已被应用,并且所有必要的数据库更改都已完成。

    【讨论】:

      猜你喜欢
      • 2012-07-26
      • 2012-06-14
      • 2015-10-07
      • 2021-05-01
      • 2023-03-17
      • 2011-06-29
      • 2014-01-12
      • 2013-07-10
      • 1970-01-01
      相关资源
      最近更新 更多