【问题标题】:Django migrate tables to new databaseDjango 将表迁移到新数据库
【发布时间】:2017-03-30 23:56:02
【问题描述】:

我最初有一个带有单个应用程序的 django 项目,并且所有模型都在该应用程序中定义。该项目在启动时仅使用默认数据库。它现在已成为一个笨重的应用程序,我正试图将其分解为更小的应用程序。这样做,我想为不同的应用程序使用不同的数据库。我在 settings.py 文件中设置了新的数据库和路由器。但是,我对如何将现有表迁移到新数据库感到困惑。

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'db_name',
        'USER': 'db_user_name',
        'PASSWORD': 'password',
        'HOST': 'hostname',
        'PORT': '3306',
    },
    'db2': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'db_name2',
        'USER': 'db_user_name2',
        'PASSWORD': 'password2',
        'HOST': 'hostname2',
        'PORT': '3306',
    }    
}

我希望将应用程序(例如 app1)从默认值移至 db2。路由器已经知道将 app1 指定给 db2,但运行迁移什么也没做。有什么想法吗?

【问题讨论】:

  • 您是否使用--database=db2 标志运行manage.py migrate
  • 当我尝试我得到以下错误:RuntimeError: Error creating new content types. Please make sure contenttypes is migrated before trying to migrate apps individually.

标签: python mysql django database


【解决方案1】:

@knbk 的回答最终是正确的,只是解决方案涉及一个额外的步骤。

1. python manage.py migrate auth --database=db2
2. python manage.py migrate app1 --database=db2

【讨论】:

  • 这解决了我遇到的no such table 错误,但它实际上并没有将数据从旧数据库移动到新数据库,它只是用适当的表初始化了新数据库。
  • 将数据从一个数据库移动到另一个数据库并不是一个自动过程。我不得不移动一些大表,并且在解决方案中描述的步骤之后,我只是通过 SQL 脚本移动了数据
猜你喜欢
  • 1970-01-01
  • 2021-12-20
  • 1970-01-01
  • 2020-07-21
  • 2016-09-04
  • 2021-06-04
  • 2021-07-06
  • 2023-03-12
  • 2018-03-04
相关资源
最近更新 更多