# settings.py 检查配置是否正确
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'your_database_name',
'USER': 'your_username',
'PASSWORD': 'your_password',
'HOST': 'localhost', # 或数据库服务器IP
'PORT': '3306',
}
}
验证步骤: - 确保数据库名称、用户名和密码正确 - 检查MySQL服务是否运行 - 确认用户有创建表的权限
Django需要MySQL客户端库才能连接MySQL数据库
解决方法:
# 安装Python的MySQL客户端
pip install mysqlclient # 推荐
# 或
pip install pymysql
如果使用pymysql,需要在__init__.py
中添加:
import pymysql
pymysql.install_as_MySQLdb()
MySQL默认字符集可能导致表创建失败
解决方法: 在settings.py中添加:
DATABASES = {
'default': {
# ...其他配置...
'OPTIONS': {
'charset': 'utf8mb4',
'init_command': "SET sql_mode='STRICT_TRANS_TABLES'",
}
}
}
解决方法:
# 删除迁移记录并重新迁移
python manage.py migrate your_app zero # 重置迁移
python manage.py makemigrations
python manage.py migrate
确保数据库用户有创建表的权限
解决方法:
GRANT ALL PRIVILEGES ON your_database_name.* TO 'your_username'@'localhost';
FLUSH PRIVILEGES;
检查错误信息
python manage.py migrate --verbosity=3
获取详细错误信息手动测试数据库连接
python manage.py dbshell
检查MySQL日志
验证模型定义
尝试创建空数据库
python manage.py migrate --run-syncdb
如果问题仍然存在,可以提供具体的错误信息以便更精准地诊断问题。