问题: Django 需要 MySQL 客户端库才能与 MySQL 服务器通信。
解决方案:
pip install mysqlclient
或
pip install pymysql
如果使用 pymysql,还需在 settings.py
中添加:
import pymysql
pymysql.install_as_MySQLdb()
检查项:
- 确保 settings.py
中的数据库配置正确:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'your_database_name',
'USER': 'your_username',
'PASSWORD': 'your_password',
'HOST': 'localhost', # 或 MySQL 服务器 IP
'PORT': '3306',
}
}
解决方案: - 确保数据库用户有创建表的权限 - 在 MySQL 中执行:
GRANT ALL PRIVILEGES ON your_database_name.* TO 'your_username'@'localhost';
FLUSH PRIVILEGES;
解决方案: - 先手动创建数据库:
CREATE DATABASE your_database_name CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
检查项: - 确保 MySQL 服务正在运行 - 检查防火墙是否阻止了 3306 端口 - 尝试使用 MySQL 客户端工具连接测试
解决方案:
在 settings.py
中添加:
USE_TZ = False
解决方案: 在数据库配置中添加选项:
'OPTIONS': {
'charset': 'utf8mb4',
'init_command': "SET sql_mode='STRICT_TRANS_TABLES'",
}
bash
mysql -u your_username -p your_database_name
python
LOGGING = {
'version': 1,
'disable_existing_loggers': False,
'handlers': {
'console': {
'level': 'DEBUG',
'class': 'logging.StreamHandler',
},
},
'loggers': {
'django.db.backends': {
'level': 'DEBUG',
'handlers': ['console'],
}
}
}
bash
python manage.py makemigrations
python manage.py migrate
如果问题仍然存在,请提供具体的错误消息以便进一步诊断。