在CPanel终端执行python manage.py migrate时遇TypeError错误求助
解决
TypeError: DatabaseWrapper.display_name() takes 0 positional arguments but 1 was given错误 问题原因
该错误源于mysql-connector-python版本与当前Django版本不兼容。Django较新版本要求DatabaseWrapper.display_name()方法必须接收self参数,但旧版mysql.connector.django驱动中该方法定义未包含此参数,导致参数匹配失败。
解决方案
方案1:升级mysql-connector-python到兼容版本
执行命令更新依赖:
pip install --upgrade mysql-connector-python
升级完成后重新执行迁移:
python manage.py migrate
方案2:替换为官方推荐的MySQL驱动(推荐)
mysqlclient是Django官方推荐的MySQL驱动,兼容性和稳定性更优:
- 卸载旧驱动:
pip uninstall mysql-connector-python
- 安装mysqlclient:
pip install mysqlclient
- 修改
settings.py中的数据库引擎配置:
DATABASES = { "default": { "ENGINE": "django.db.backends.mysql", "NAME": "my-database-name", "HOST": "localhost", "PORT": "3306", "USER": "my-database-username", "PASSWORD": "my-password", } }
- 重新执行迁移:
python manage.py migrate
方案3:临时修改驱动源码(不推荐)
若无法升级或替换驱动,可手动修改驱动源码适配参数要求:
找到Python环境下mysql/connector/django/base.py文件,定位display_name方法,修改为:
def display_name(self): return "MySQL"
保存后重新执行迁移命令。注意:此修改会在驱动升级时被覆盖,仅作临时应急用。
内容的提问来源于stack exchange,提问作者David Ochiel
相关产品推荐
相关产品推荐

