【问题标题】:Django - migrate database from sqlite to mysqlDjango - 将数据库从 sqlite 迁移到 mysql
【发布时间】:2023-03-12 23:10:02
【问题描述】:

我正在尝试将我的 sqlite 数据库迁移到 mysql。我使用了 dumdata/loaddata 命令:

python manage.py dumpdata > datadump.json

接下来将我的 settings.py 更改为

# DATABASES = {
#     'default': {
#         'ENGINE': 'django.db.backends.sqlite3',
#         'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
#     }
# }

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'testowa',
        'USER': 'testowy',
        'PASSWORD': 'mypassword',
        'HOST': 'localhost',
        'PORT': '3306',
    }
}

然后运行python manage.py loaddata datadump.json

我收到一个错误:

django.db.utils.ProgrammingError: (1146, "Table 'testowa.constance_config' doesn't exist")

有什么想法吗?

【问题讨论】:

  • 你跑了吗./manage.py migrate
  • 是的。我在数据转储之前和之后都这样做了。之后我得到同样的错误。
  • 迁移成功了吗?
  • 不,它没有。我认为这是 django-constance 错误。它使用自己的数据库。我会尝试解决它,但这次我没有任何想法。
  • 问题可能是由 core/checks/registry.py 中的检查引起的。对我来说,取消注释和跳过检查有助于正确执行迁移。我通过在 PyCharm 的 Debug 中运行迁移发现了这一点。如果您选择评论支票,请稍后重新打开 'm :)

标签: mysql django


【解决方案1】:

Django 需要

1) 使用 migrate 命令到新数据库(如果您使用 authrouter,请指定数据库:

python manange.py migrate --database=yourdatabasename

2) 具有逻辑顺序的转储数据(例如,如果在 table1 中您有 table2 的外键,则 table2 必须在 table1 之前导入)

3) 要创建逻辑顺序,只需将单个模型转储为

./manage.py dumpdata myapp1.fist_model myapp1.second_model >ordered_file.json

4) 之后加载数据

【讨论】:

    猜你喜欢
    • 2016-09-04
    • 1970-01-01
    • 2013-10-09
    • 2021-09-21
    • 1970-01-01
    • 2020-10-12
    • 1970-01-01
    • 2019-06-23
    • 2011-02-17
    相关资源
    最近更新 更多