【问题标题】:Django : migration success but not creating new tableDjango:迁移成功但没有创建新表
【发布时间】:2017-11-16 01:05:31
【问题描述】:

我一直在使用 django 迁移来处理数据库。最近,我将会话分为两部分,一是阅读,一是写作。完成此操作后,我制作了添加新表并运行它的新迁移文件。成功了,

Operations to perform:
Apply all migrations: food
Running migrations:
Applying food.0107_auto_20171116_0849... OK

但是,当我使用 shell 检查 mysql 数据库时,没有新表。我删除了 django 迁移历史并尝试了几次,但结果是一样的。它说已应用迁移,但没有新表。这是我的迁移文件

# -*- coding: utf-8 -*-
# Generated by Django 1.11.2 on 2017-11-16 08:49
from __future__ import unicode_literals

from django.db import migrations, models
import uuid


class Migration(migrations.Migration):

    dependencies = [
        ('bubi', '0106_auto_20171110_1452'),
    ]

    operations = [
        migrations.CreateModel(
           name='FoodHistory',
              fields=[
                  ('id', models.UUIDField(default=uuid.uuid4, primary_key=True, serialize=False)),
                  ('date', models.DateField(verbose_name='updated date')),
        ],
        options={
            'verbose_name': 'food updated date',
            'verbose_name_plural': 'food updated date',
        },
    ),
]

我想知道拆分会话是否会影响迁移。谢谢!

编辑

我添加了我的 local_settings.py

DATABASES = {
'default': {
    'ENGINE': 'django.db.backends.mysql',
    'NAME': 'food',
    'HOST': '127.0.0.1',
    'USER': 'apple',
    'PASSWORD': 'apple'
},
'read': {
    'ENGINE': 'django.db.backends.mysql',
    'NAME': 'food',
    'HOST': '127.0.0.1',
    'USER': 'apple',
    'PASSWORD': 'apple'
},
'write': {
    'ENGINE': 'django.db.backends.mysql',
    'NAME': 'food',
    'HOST': '127.0.0.1',
    'USER': 'apple',
    'PASSWORD': 'apple'
}
}

【问题讨论】:

  • 您确定连接到正确的数据库吗?你在你的项目目录中看到了一个名为db.sqlite3 的文件吗?
  • @chris 我添加了我的 local_settings.py,我不使用 db.sqlite3,我使用 mysql。
  • 我知道您正在尝试使用 MySQL。我想知道它是否真的这样工作。 python manage.py sqlmigrate food 0107 给了什么?
  • @chris 上面写着Running migrations: Applying bubi.0107_auto_20171116_0849... OK 但没有桌子
  • 这不是我要问的输出。那是给migrate的;我在问sqlmigrate。它应该输出一些 SQL 代码。

标签: python mysql django


【解决方案1】:

如果你在 Django 中使用多个 DB,在迁移时,你需要检查你编码的 Database Router。

检查数据库路由器类中的“allow_migrate”方法。

这是关于这个问题的官方 Django 文档。

https://docs.djangoproject.com/ko/1.11/topics/db/multi-db/#allow_migrate

【讨论】:

  • 终于,问题解决了。我添加了allow_migrate 并使其成为return food,现在它可以工作了。
【解决方案2】:

你应该设置数据库名称来迁移其他数据库:

./manage.py migrate --database=write

【讨论】:

    猜你喜欢
    • 2020-05-21
    • 1970-01-01
    • 2017-09-15
    • 2015-08-03
    • 2020-12-16
    • 2019-10-27
    • 2015-06-08
    • 2023-01-06
    • 2021-05-04
    相关资源
    最近更新 更多