Django切换MySQL启动报1049 Unknown database 'django'错误
报错根因
错误码1049是MySQL原生抛出的错误,含义是你Django配置中NAME字段指定的django数据库,在当前连接的MySQL实例中不存在。
注意:和SQLite文件不存在时自动创建文件的逻辑不同,Django连接MySQL时不会自动创建指定的数据库,只会在连接到已存在的数据库后执行表结构迁移操作。
修复步骤
- 登录本地3306端口对应的MySQL服务,使用你配置中填写的
myusername账号,确认账号可正常连接。 - 手动创建项目使用的数据库,推荐指定utf8mb4字符集避免后续特殊字符存储异常,执行SQL:
CREATE DATABASE django CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
- 执行
SHOW DATABASES;确认返回结果中存在django库后,回到Django项目根目录执行迁移命令:
python manage.py migrate
- 迁移执行完成后再启动服务,报错即可消失。
仍报错时的排查方向
- 确认本地没有运行多个MySQL实例:比如同时存在本地安装的MySQL、Docker容器启动的MySQL、集成环境自带的MariaDB等,避免3306端口对应错误的服务实例,导致你在A实例建了库,Django连到了B实例。
- 确认账号权限:检查
myusername账号是否拥有django库的读写权限,权限不足时执行以下SQL授权:
GRANT ALL PRIVILEGES ON django.* TO 'myusername'@'127.0.0.1' IDENTIFIED BY 'mypassword'; FLUSH PRIVILEGES;
- 校验名称一致性:Linux环境下MySQL默认对库名、表名大小写敏感,确保你创建的数据库名和配置中
NAME字段的值完全一致,不要出现大小写差异。
内容的提问来源于stack exchange,提问作者bladehearme
相关产品推荐
相关产品推荐

