Django 2.0与MySQL连接异常:Admin页面访问报错
Django 2.0 连接MySQL后Admin页面报错的排查与解决
嘿,我碰到过好多类似的情况!虽然你没贴具体的报错信息,但结合你说的——XAMPP本地MySQL已经确认连接正常、数据也能录入,唯独Admin页面出问题,大概率是这几个常见坑,咱们一步步来捋:
1. 数据库引擎依赖没装对
Django 2.0开始对MySQL的驱动要求更明确,默认需要mysqlclient而不是老版的pymysql。如果驱动没装对,就会出现"能连数据库但Admin页面炸锅"的情况:
- 先检查
settings.py里的数据库配置,确保引擎是django.db.backends.mysql:
DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', 'NAME': '你的数据库名称', 'USER': 'root', 'PASSWORD': '你的XAMPP MySQL密码(默认是空就留空)', 'HOST': '127.0.0.1', 'PORT': '3306', } }
- 然后确认
mysqlclient已安装,没装的话执行:
pip install mysqlclient
要是Windows系统装不上,直接找对应Python版本的.whl文件手动安装就行。
2. Admin核心数据表没迁移
你说数据能录入,但Admin系统本身需要的表(比如auth_user、django_admin_log这些)可能没生成。这时候得重新跑迁移:
- 先执行:
python manage.py makemigrations
- 再执行:
python manage.py migrate
注意:执行migrate时要确保没有报错,要是之前迁移过但有残留问题,建议先备份数据库,清空后再重新迁移。
3. 登录Admin的用户权限不够
哪怕你能登录,要是用户没有超级管理员权限或者不是staff用户,Admin页面也会报错:
- 先创建一个全新的超级用户:
python manage.py createsuperuser
跟着提示输入用户名、邮箱、密码就行。
- 要是已经有用户,进Django Shell给用户加权限:
python manage.py shell
然后执行:
from django.contrib.auth.models import User user = User.objects.get(username='你的用户名') user.is_superuser = True user.is_staff = True user.save()
4. MySQL字符集编码不兼容
XAMPP的MySQL默认字符集可能不是utf8mb4,而Django 2.0推荐用这个编码,会导致Admin读取数据时出现编码错误:
- 找到XAMPP里MySQL的配置文件(Windows是
my.ini,Mac/Linux是my.cnf),添加或修改:
[mysqld] character-set-server=utf8mb4 collation-server=utf8mb4_unicode_ci
- 重启XAMPP的MySQL服务,然后重新创建数据库(或者修改现有数据库的字符集),再重新跑迁移。
如果以上方法都没解决,把具体的报错traceback贴出来,我再帮你精准定位!
内容的提问来源于stack exchange,提问作者Mohammad Abootaleb
相关产品推荐
相关产品推荐

