运行manage.py测试时Django数据迁移失败,但运行manage.py migration时失败

雷·布雷内基(Leigh Brenecki)

我有一个Django 1.7迁移,看起来像这样:

# -*- coding: utf-8 -*-
from __future__ import unicode_literals

from django.db import models, migrations

def units_to_m2m(apps, schema_editor):
    Interval = apps.get_model("myapp", "Interval")
    IntervalUnit = apps.get_model("myapp", "IntervalUnit")

    for interval in Interval.objects.all():
        IntervalUnit(
            interval=interval,
            unit=interval.unit,
            base_date=interval.base_date
        ).save()

class Migration(migrations.Migration):

    dependencies = [
        ('otherapp', '0007_auto_20150310_1400'),
        ('myapp', '0009_auto_20150316_1608'),
    ]

    operations = [
        migrations.CreateModel(
            name='IntervalUnit',
            # ...
        ),
        # ...
        migrations.AddField(
            model_name='interval',
            name='units',
            field=models.ManyToManyField(to='otherapp.Unit', through='myapp.IntervalUnit'),
            preserve_default=True,
        ),
        migrations.RunPython(units_to_m2m),
        migrations.RemoveField(
            model_name='interval',
            name='unit',
        ),
        migrations.RemoveField(
            model_name='interval',
            name='base_date',
        ),
    ]

当我运行时manage.py migrate,它可以正常迁移。manage.py test但是,当我运行时,它将尝试创建测试数据库,然后在此迁移过程中失败,并显示以下错误:

Traceback (most recent call last):
...
  File "/home/adam/myproject/myapp/migrations/0010_auto_20150317_1516.py", line 10, in units_to_m2m
    for interval in Interval.objects.all():
...
django.db.utils.OperationalError: (1054, "Unknown column 'myapp_interval.base_date' in 'field list'")

之后,当我连接到测试数据库时(不会删除它),即使迁移过程中途崩溃,数据库结构也将按照您的预期运行。这里发生了什么?

编辑:我已经尝试将迁移分为三个单独的迁移,一个迁移包含一个迁移之前的所有内容RunPython,一个包含RunPython其自身的内容,另一个包含之后的所有内容;它仍然在做完全相同的事情。

雷·布雷内基(Leigh Brenecki)

事实证明,迁移已按照预期的顺序成功运行,但是我有两个数据库,并且在两个平台上都运行了我的迁移,而无需咨询数据库路由器。跟踪此问题的Django票证是#23273,该票证仍然开放。

大概是,RunPython迁移是针对default(已经迁移的)查询而不是针对迁移实际上应该在其上运行的数据库的查询

就我而言,我们不再需要将第二个数据库用于任何事情,因此我们可以将其settings.DATABASES完全删除

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

使用MySQL数据库运行“ python manage.py migration”时遇到SQL错误

来自分类Dev

运行manage.py时如何解决这些错误

来自分类Dev

运行python manage.py shell时出错

来自分类Dev

运行python manage.py shell时出错

来自分类Dev

运行manage.py时如何解决这些错误

来自分类Dev

运行 manage.py runserver 时 Python.exe 崩溃

来自分类Dev

python无法打开文件“ manage.py”-“ heroku运行python manage.py migration命令输入”

来自分类Dev

python无法打开文件“ manage.py”-“ heroku运行python manage.py migration命令输入”

来自分类Dev

找不到django.core.management,但在运行manage.py时django存在

来自分类Dev

找不到django.core.management,但在运行manage.py时django存在

来自分类Dev

如何使docker build运行python manage.py migration

来自分类Dev

运行python manage.py时出现语法错误-Django

来自分类Dev

运行Django manage.py时出现错误“文件不存在”

来自分类Dev

运行python manage.py时出现语法错误-Django

来自分类Dev

Django未使用manage.py test运行测试

来自分类Dev

Django-关系“关系”不存在。无法运行python manage.py migration?

来自分类Dev

“即使设置了我的static_root,运行'$ python manage.py collectstatic --noinput时也会出错”

来自分类Dev

将模型导入到manage.py运行的文件中时,“尚未加载应用”

来自分类Dev

当我运行python manage.py makemigrations时出现此错误

来自分类Dev

当我运行 python3 manage.py runserver 时,Pycharm 在终端中显示错误

来自分类Dev

当我们运行 Python manage.py runserver 时到底发生了什么

来自分类Dev

从Django 1.6升级到1.9:python manage.py迁移失败

来自分类Dev

Django:manage.py工作正常,但django-admin失败

来自分类Dev

通过主管运行./manage.py

来自分类Dev

无法在代码船上运行manage.py

来自分类Dev

通过主管运行./manage.py

来自分类Dev

无法在代码船上运行manage.py

来自分类Dev

Python-Django Manage.py Syncdb失败?

来自分类Dev

django Geonode python manage.py updatelayers 失败

Related 相关文章

  1. 1

    使用MySQL数据库运行“ python manage.py migration”时遇到SQL错误

  2. 2

    运行manage.py时如何解决这些错误

  3. 3

    运行python manage.py shell时出错

  4. 4

    运行python manage.py shell时出错

  5. 5

    运行manage.py时如何解决这些错误

  6. 6

    运行 manage.py runserver 时 Python.exe 崩溃

  7. 7

    python无法打开文件“ manage.py”-“ heroku运行python manage.py migration命令输入”

  8. 8

    python无法打开文件“ manage.py”-“ heroku运行python manage.py migration命令输入”

  9. 9

    找不到django.core.management,但在运行manage.py时django存在

  10. 10

    找不到django.core.management,但在运行manage.py时django存在

  11. 11

    如何使docker build运行python manage.py migration

  12. 12

    运行python manage.py时出现语法错误-Django

  13. 13

    运行Django manage.py时出现错误“文件不存在”

  14. 14

    运行python manage.py时出现语法错误-Django

  15. 15

    Django未使用manage.py test运行测试

  16. 16

    Django-关系“关系”不存在。无法运行python manage.py migration?

  17. 17

    “即使设置了我的static_root,运行'$ python manage.py collectstatic --noinput时也会出错”

  18. 18

    将模型导入到manage.py运行的文件中时,“尚未加载应用”

  19. 19

    当我运行python manage.py makemigrations时出现此错误

  20. 20

    当我运行 python3 manage.py runserver 时,Pycharm 在终端中显示错误

  21. 21

    当我们运行 Python manage.py runserver 时到底发生了什么

  22. 22

    从Django 1.6升级到1.9:python manage.py迁移失败

  23. 23

    Django:manage.py工作正常,但django-admin失败

  24. 24

    通过主管运行./manage.py

  25. 25

    无法在代码船上运行manage.py

  26. 26

    通过主管运行./manage.py

  27. 27

    无法在代码船上运行manage.py

  28. 28

    Python-Django Manage.py Syncdb失败?

  29. 29

    django Geonode python manage.py updatelayers 失败

热门标签

归档