当在 PyCharm 中运行 Django 迁移时遇到 MySQL 连接错误,通常有以下几个常见原因和解决方案:
django.db.utils.OperationalError: (1045, "Access denied for user 'username'@'localhost' (using password: YES)")
解决方案:
- 检查 settings.py
中的数据库配置:
python
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'your_database_name',
'USER': 'your_username',
'PASSWORD': 'your_password',
'HOST': 'localhost', # 或你的 MySQL 服务器地址
'PORT': '3306', # 默认是 3306
}
}
- 确保 MySQL 用户有访问权限:
sql
GRANT ALL PRIVILEGES ON your_database_name.* TO 'your_username'@'localhost' IDENTIFIED BY 'your_password';
FLUSH PRIVILEGES;
django.db.utils.OperationalError: (1049, "Unknown database 'database_name'")
解决方案:
- 先在 MySQL 中创建数据库:
sql
CREATE DATABASE database_name CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
django.db.utils.OperationalError: (2003, "Can't connect to MySQL server on 'localhost'")
解决方案:
- 确认 MySQL 服务正在运行
- 检查防火墙设置是否阻止了连接
- 尝试将 HOST
从 'localhost'
改为 '127.0.0.1'
django.core.exceptions.ImproperlyConfigured: Error loading MySQLdb module.
解决方案:
- 安装 MySQL 客户端库:
bash
sudo apt-get install python3-dev default-libmysqlclient-dev build-essential # Ubuntu/Debian
- 安装 Python MySQL 客户端:
bash
pip install mysqlclient
或
bash
pip install pymysql
如果使用 pymysql,需要在 settings.py
同目录的 __init__.py
中添加:
python
import pymysql
pymysql.install_as_MySQLdb()
检查 PyCharm 使用的 Python 解释器:
检查环境变量:
数据库工具插件:
bash
mysql -u username -p -h hostname database_name
如果以上步骤仍不能解决问题,可以提供具体的错误信息以便进一步诊断。