执行python manage.py migrate报1046无数据库选中错误如何解决
报错原因
核心问题是Django配置项的键名错误:Django连接MySQL时,指定数据库名称的配置键要求为NAME,你当前使用的DATABASE不是Django可识别的配置项,导致程序读取不到要连接的数据库名称,即使数据库本身真实存在,也会抛出「未选择数据库」的报错。
解决方案
- 修改
settings.py中的DATABASES配置,将'DATABASE': 'financeblog'替换为'NAME': 'financeblog',修改后的正确配置如下:
DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', 'NAME': 'financeblog', 'USER': 'financeblog', 'PASSWORD': 'xxxxx', 'HOST': '127.0.0.1', 'PORT': '3308', } }
- 保存配置文件后,重新执行
python manage.py migrate即可正常执行数据库迁移。
异常排查补充(修改配置后仍报错时可核对)
- 确认
financeblog数据库用户拥有financeblog库的操作权限,可登录MySQL执行SHOW GRANTS FOR 'financeblog'@'127.0.0.1';查看权限配置 - 确认本地3308端口的MySQL服务正常运行,无防火墙规则拦截本地环回地址的连接请求
内容的提问来源于stack exchange,提问作者Dennis M. Gray
相关产品推荐
相关产品推荐

