gpt4 book ai didi

python - Django migrate 尝试连接到非默认数据库

转载 作者:行者123 更新时间:2023-11-29 10:14:28 24 4
gpt4 key购买 nike

根据Django documentation :

The migrate management command operates on one database at a time. By default, it operates on the default database, but by providing the --database option, you can tell it to synchronize a different database.

我的 Django 应用程序在我的本地开发环境中具有以下数据库配置:

DATABASES = {
'default': {
'ENGINE': 'django.db.backends.postgresql_psycopg2',
'NAME': 'mydatabase',
'USER': 'myuser',
'PASSWORD': 'mypassword',
'HOST': 'localhost',
'PORT': '5432',
},
'external_db': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'myexternaldb',
'USER': 'myexternaluser',
'PASSWORD': 'myexternalpassword',
'HOST': '10.10.10.10',
'PORT': '3306',
'OPTIONS': {
'init_command': "SET sql_mode='STRICT_TRANS_TABLES'"
}
}
}

我在“external_db”数据库中只有一张表,并且我将其视为只读(实际上,用户只有读取权限)。当我尝试迁移默认数据库中的表时,出现以下错误:

_mysql_exceptions.OperationalError: (2003, "Can't connect to MySQL server on '10.10.10.10' (10060)")

当文档明确指出迁移操作默认仅适用于 default 数据库时,为什么迁移操作会尝试连接到此外部数据库?这是 Django 错误吗?

最佳答案

在执行任何管理命令之前,Django会run system checks整个项目。

core system checks Django 执行的操作包括多项数据库检查。在您的情况下,数据库不可用,因此失败。迁移本身将在您选择的数据库上执行,但为了通过检查,Django 需要可以访问其他数据库。

如果该特定数据库在本地不可用,则通常的方法是使用本地设置文件来覆盖 DATABASES 设置并删除该 key 。

关于python - Django migrate 尝试连接到非默认数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50321315/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com