【问题标题】:Django makemigrations command generate the same migrations everytimeDjango makemigrations 命令每次都生成相同的迁移
【发布时间】:2019-08-30 13:02:03
【问题描述】:

我的项目基于 django 框架,makemigrations 命令无法正常工作。 makemigrations 命令每次都生成相同的脚本,但我的代码没有改变。

我升级了django版本,但问题依旧。 django 现在是 2.2

models.py

class BatchUploadRecord(models.Model):

    create_date = models.DateTimeField(_("date created"), auto_now_add=True)
    update_date = models.DateTimeField(_("date updated"), auto_now=True)


    course = models.ForeignKey(Course, related_name='course_batchtemp', on_delete=models.SET_NULL, null=True)

    lesson = models.ForeignKey(Lesson, related_name='lesson_batchtemp', on_delete=models.SET_NULL, null=True)

迁移

class Migration(migrations.Migration):

    dependencies = [
        ('courses', '0025_auto_20190130_1634'),
    ]

    operations = [
        migrations.AlterField(
            model_name='batchuploadrecord',
            name='lesson',
            field=models.ForeignKey(null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='lesson_batchtemp', to='courses.Lesson'),
        ),
    ]

运行makemigrations 命令

(rinpoche) ➜  rinpoche_ask_api git:(develop) ✗ ./manage.py makemigrations 
Migrations for 'courses':
  applications/courses/migrations/0027_auto_20190409_1658.py
    - Alter field lesson on batchuploadrecord
(rinpoche) ➜  rinpoche_ask_api git:(develop) ✗ ./manage.py makemigrations 
Migrations for 'courses':
  applications/courses/migrations/0028_auto_20190409_1658.py
    - Alter field lesson on batchuploadrecord
(rinpoche) ➜  rinpoche_ask_api git:(develop) ✗ ./manage.py makemigrations 
Migrations for 'courses':
  applications/courses/migrations/0029_auto_20190409_1658.py
    - Alter field lesson on batchuploadrecord

我不知道如何解决它。

【问题讨论】:

  • 你也可以添加其他迁移文件代码吗?
  • 是的,我在 models.py 中创建了新模型,makemigration 创建新迁移文件包含新模型,Alter field 重复

标签: django


【解决方案1】:

如果您现在不担心数据库,请尝试删除所有迁移并重置它们。为此,请按照我的说明进行操作:

  1. find . -path "*/migrations/*.py" -not -name "__init__.py" -delete

  2. find . -path "*/migrations/*.pyc" -delete

  3. 删除当前数据库,或删除db.sqlite3
  4. 创建初始迁移并生成数据库架构。

    python manage.py makemigrations

    python manage.py migrate

如果你被困在这里,这里有完整的教程:https://simpleisbetterthancomplex.com/tutorial/2016/07/26/how-to-reset-migrations.html

【讨论】:

  • 我希望我能做到,但是我的项目在生产环境中运行了 2 年,使用 DevOps,我担心这会破坏原来的部署过程,并且可能会出现不可预知的情况。跨度>
  • 数据库转储怎么样?然后像我写的那样重置整个数据库,进行迁移,迁移并将数据上传到数据库?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-03-22
  • 2015-12-08
  • 2021-11-03
  • 2012-05-01
  • 1970-01-01
  • 2013-12-14
  • 2017-08-28
相关资源
最近更新 更多