在Django中从SQLite切换至MySQL数据库遇迁移报错求助
解决Django使用mysql.connector.django迁移MySQL时报TypeError的问题
问题原因
这个错误主要是mysql-connector-python版本与当前Django版本不兼容,导致字符串和字节类型转换异常;此外,数据库配置缺少必要参数也可能引发部分表创建失败的情况。
分步解决方案
1. 安装兼容版本的mysql-connector-python
卸载现有版本,安装与Django版本匹配的稳定版(Django 3.2/4.x推荐安装8.0.33版本):
pip uninstall mysql-connector-python pip install mysql-connector-python==8.0.33
2. 修正数据库配置参数
替换原SQLite配置为完整的MySQL配置,填写Cpanel提供的数据库信息,同时添加必要选项避免字符集和认证问题:
DATABASES = { 'default': { 'ENGINE': 'mysql.connector.django', 'NAME': '你的Cpanel数据库名', # 格式通常为cpanel用户名_数据库名 'USER': 'MySQL用户名', 'PASSWORD': 'MySQL密码', 'HOST': 'localhost', # Cpanel环境下默认值为localhost 'PORT': '3306', 'OPTIONS': { 'charset': 'utf8mb4', 'auth_plugin': 'mysql_native_password', 'use_unicode': True, }, } }
3. 清理迁移残留并重新执行迁移
登录Cpanel的phpMyAdmin,删除已创建的两张不完整表:django_content_type和django_migrations,然后执行迁移命令:
python manage.py makemigrations python manage.py migrate
4. 验证数据库用户权限
确认Cpanel中创建的MySQL用户拥有对应数据库的CREATE、ALTER、INSERT、UPDATE权限,缺少权限会导致部分表无法正常创建。
内容的提问来源于stack exchange,提问作者nima_ shadloo
相关产品推荐
相关产品推荐

