这个问题导致我自己做的一个平台在迁移之后,一周都没成功开起来,真心是吃了大亏。
【背景】本人在2018年开发的一套小系统,用的是python3.6+django1.8+mysql6.5进行搭建的,然后数据库连接器用的是PyMysql;系统运行了半年,因为部署在一台普通pc上面,结果pc主机整个挂了,只把mysql的备份抢救了回来。在重新搭建环境的时候,决定同步把版本升上去。于是生产环境就变成了python3.6+django2.2+mysql8.0。结果就出现了python manage makemigrations成功,但是python manage migrate的时候一直吊死。
【解决过程】
1、尝试重装了django,mysql,重建数据库,重装pymysql,失败,还是吊死。
2、尝试删除migrations文件夹里面的迁移记录,失败,还是吊死。
3、我试着查看migrate的语句,检查没问题。 python manage.py sqlmigrate app_name 0001_initial
3、python、django、mysql不能换,只能换数据库连接器了,于是删掉了pymysql,然后用回mysqlclient;然后修改setting配置,竟然成功了!!!
【结论】
真正的原因我没有技术能力找到,网上说的那些兼容性问题,我也没碰到,我只是逃避了问题,换了一种解决方案,如果有谁碰到相同的问题,没精力的话,可以用的办法进行规避解决。
1)安装mysqlclient: pip install mysqlclient
2)修改setting.py中数据库配置部分
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': '******',
'USER': '**********',
'PASSWORD': '********************',
'HOST': '127.0.0.1',
'PORT': '3306',
}
}
3)数据库同步迁移
python manage makemigrations
python manage migrate
4)开启服务
用apach开启 httpd
原生开启:python manage runserver *.*.*.*:8081