版本:CentOS6.8 Django2.1
执行python manage.py makemigrations时正常,但在执行数据迁移python manage.py migrate时,报如下错误!
django.db.migrations.exceptions.MigrationSchemaMissing: Unable to create the django_migrations table ((1064, “You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ‘(6) NOT NULL)’ at line 1”))
经过再三检查,代码没有问题,后来才想起来是不明Django的版本问题,因为之前安装一个软件包,自动升级了Django的版本,由1.8.3升级到2.1,后来网上查了资料,真的是Django的版本问题,查了官方文档,Django2.1只支持mysql5.6以上的版本!
然后我查一下mysql版本,mysql -V
我的是5.1版本,所以绝对是不兼容的!接下来就是要安装一个5.6以上的mysql!
我尝试了安装mysql5.7,但是出现了很多错误,从报警信息来看估计是依赖包的问题,没有找到很好的解决办法,也没有太多心思去慢慢解决了,有找到资料说升级CentOS7就不会出现这些错误!因为之前一直用的CentOS6.8,很多软件都安装好了,所以也没去升级,因为mysql5.6也是兼容的,我就试试安装mysql5.6。
首先卸载旧版本的mysql,输入命令:
yum remove mysql mysql-*
mysql5.6安装过程:
1、如果有重要数据的话就先备份一下
进入mysql数据库目录 cd /var/lib/mysql
mysqldump -uroot -p –all-databases –default-character-set=utf8 > /software/databases.sql( 备份路径)
2、停止MySQL服务,输入命令:
service mysqld stop
3、检测系统是否已经安装过mysql或其依赖,若已装过要先将其删除,否则安装过程会报错,输入命令:
一、yum list installed | grep mysql(如果有文件显示,则删除,没有则不用管)
二、假设有mysql-community-release-el6-5.noarch,则执行命令
yum -y remove mysql-community-release-el6-5.noarch
4、下载安装mysql5.6,(要确定能连接外网)
输入命令:
一、rpm -Uvh http://repo.mysql.com/mysql-community-release-el6-5.noarch.rpm
二、yum install mysql-community-server
5、启动mysql
service mysqld start
出现错误:
MySQL Daemon failed to start.
Starting mysqld: [FAILED]
解决办法:
rm -fr /var/lib/mysql/* (删除老版本mysql的开发头文件和库)
rm /var/lock/subsys/mysqld (删除锁定文件)
killall mysqld(杀死所有mysql进程)
(按顺序输入这三行代码)
完了以后再输入:service mysqld start,启动成功!!!
6、设置数据库密码
输入:mysql -u root -p 密码不输,直接enter进入数据库
使用set password for ‘username’@’host’ = password(‘newpassword’)修改密码
我的是set password for ‘root’@’localhost’ = 123123;
完成!!!
7、这里进入数据库,你之前建立的数据库全都没了,要重新新建数据库,然后按步骤执行就可以了!
8、python manage.py makemigrations
python manage.py migrate
成功!!
学习不易,每次遇到这种版本问题都得花很长时间去弄,也是够累的,只能慢慢总结累积经验,也是一种收获!