【问题标题】:Migrations in Django 1.7Django 1.7 中的迁移
【发布时间】:2014-05-28 21:30:10
【问题描述】:

我目前参与了一个使用 Django 1.7 开发版本的项目。我想使用“makemigrations”将我在模型中所做的更改(添加字段、删除模型等)传播到数据库架构中和“迁移”命令。我在我的应用程序中的一个模型中添加了一个“年龄”字段。

country = models.CharField(max_length=50, blank=True)
address = models.CharField(max_length=100, blank=True)
postal_code = models.IntegerField(max_length=50, blank=True)
city = models.CharField(max_length=50, blank=True)
phone_no = models.CharField(max_length=25, blank=True)
skype_name = models.CharField('Skype Username',max_length=50, blank=True)
age=models.IntegerField(max_length=25,blank=True)

当我使用“makemigrations”命令时,输出类似于---“未检测到更改”。我猜“makemigrations”无法弄清楚对架构所做的更改。任何建议我该怎么做工作??

【问题讨论】:

  • 您使用的具体命令是什么?是否包含应用名称?
  • "python manage.py makemigrations"。不,我没有包含应用名称。

标签: django django-migrations


【解决方案1】:

如果这是您第一次迁移您必须使用的应用程序:

manage.py makemigrations myappname

一旦你这样做了,你就可以做到:

manage.py migrate

如果您的应用程序在数据库中,修改了它的模型并且它没有更新 makemigrations 上的更改,那么您可能还没有迁移它。 将您的模型改回其原始形式,运行第一个命令(使用应用程序名称)并迁移......它会伪造它。执行此操作后,将更改恢复到模型上,运行 makemigrations 并再次迁移,它应该可以工作。

【讨论】:

    【解决方案2】:

    我有时也会遇到同样的问题。 我设法通过以下方式填充数据库中的更改:

    rm -rf your_app/migrations/*

    python manage.py 迁移

    如果它不起作用,请考虑手动删除表,如果其中没有数据。

    它适用于 django 1.7c1

    【讨论】:

    • 仅适用于您自己工作或除开发之外还没有任何安装的情况,因为这会删除迁移的主要优点,即通过创建来支持数据库模式版本控制增量数据库更新脚本。
    【解决方案3】:

    如果您是adding initial migrations to an app,则在使用makemigrations 命令时必须包含应用名称。

    python manage.py makemigrations your_app_label
    

    【讨论】:

      猜你喜欢
      • 2014-12-13
      • 2015-10-31
      • 2015-02-09
      • 2014-12-21
      • 2015-05-06
      • 2014-10-28
      • 1970-01-01
      • 2014-07-08
      • 2014-11-19
      相关资源
      最近更新 更多