实战分享丨MySQL 与Django版本匹配相关经验
摘要:关于MySQL 与Django版本匹配相关知识的经验分享。
run:
(env) E:\PythonPro\PyDjangoProDemo011\xuanyuaniotpro>python manage.py migrate
报错代码提示如下:
raise errorclass(errno, errval) django.db.utils.ProgrammingError: (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") During handling of the above exception, another exception occurred:
根据提示分析报错原因:
Django2.1不再支持MySQL5.5,必须mysql5.6版本以上
查mysql版本和Django版本:
mysql版本:
Django版本:
根据原因分析得出解决思路:
二选一
(1)Django降级到2.0
(env) PS E:\PythonPro\PyDjangoProDemo011\xuanyuaniotpro> pip install Django==2.0.0 -i https://pypi.douban.com/simple
>>> import django >>> django.VERSION
(env) PS E:\PythonPro\PyDjangoProDemo011\xuanyuaniotpro> python .\manage.py makemigrations No changes detected (env) PS E:\PythonPro\PyDjangoProDemo011\xuanyuaniotpro> (env) PS E:\PythonPro\PyDjangoProDemo011\xuanyuaniotpro> python .\manage.py migrate
成功连接数据库。
(2)MySQL升级
1.查看MySQL的版本
mysql --version mysql Version 14.14 Distrib 5.5.28, for Linux (x86_64) using reeadline 5.1 从上面可以看出,MySQL版本为5.5.28
2.查看MySQL的安装包
yum list | grep mysql 注意:如果没有看到想要升级的版本,请更新yum安装库,具体操作如下: 1) wget http://dev.mysql.com/get/mysql-community-release-el6-5.noarch.rpm 2) rpm -ivh mysql-community-release-el6-5.noarch.rpm 3) 重新查看即可,yum list | grep mysql
3.查看当前已经安装的MySQL安装相关信息
yum list | grep ^mysql 注意:这里的^代表以mysql开头的项 ----------- yum info mysql-server 据说,上面的命令执行完毕后可以看到可升级的版本,但是并没看到。 ----------- yum check-update mysql-server 可以检查可用的安装包
4.升级MySQL及其组件
yum update mysql-server 执行结束,会显示complete之类的关键字。
5.检查是否更新成功
mysql --version 当然,执行完这一步并不代表已经可以用MySQL了。在这里,可能碰到了一个错误。
问题1:
启动服务的时候,提示找不到mysql.sock之类的问题。
解决方案:
1.查看错误日志(前提:my.cnf里面有配置日志功能log-error = 路径) cat /var/log/mysql_error.log 2.发现skip-locking5.6不支持,已经过时。改为skip-extenal-locking (skip-locking可参考链接:) 3.保存退出,重启mysqld服务即可
问题2:
启动服务的时候,错误日志显示Unknown/unsupported storage engine: InnoDB
解决方案:
执行删除命令:rm -rf /var/lib/mysql/ib* 删除:ibdata1、ib_logfile0、ib_logfile1文件 重启服务即可,service mysqld restart
当然,你可能会想,如果更新的版本存在5.5、5.6甚至更高,但我只是想更新到指定版本呢?那应该怎么做?
其实很简单,只要在上诉操作中更新前,改动repo配置文件即可。
配置文件路径:/etc/yum.repos.d 修改配置文件:mysql-community.repo和mysql-community-source.repo 修改内容:将所要更新的版本的enabled=1,其他版本的enabled=0即可,如下图所示,只更新到mysql 5.6版本:

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
你用对锁了吗?浅谈 Java “锁” 事
每个时代,都不会亏待会学习的人 大家好,我是yes。 本来打算继续写消息队列的东西的,但是最近在带新同事,发现新同事对于锁这方面有一些误解,所以今天就来谈谈“锁”事和 Java 中的并发安全容器使用有哪些注意点。 不过在这之前还是得先来盘一盘为什么需要锁这玩意,这得从并发 BUG 的源头说起。 并发 BUG 的源头 这个问题我 19 年的时候写过一篇文章, 现在回头看那篇文章真的是羞涩啊。 让我们来看下这个源头是什么,我们知道电脑有CPU、内存、硬盘,硬盘的读取速度最慢,其次是内存的读取,内存的读取相对于 CPU 的运行又太慢了,因此又搞了个CPU缓存,L1、L2、L3。 正是这个CPU缓存再加上现在多核CPU的情况产生了并发BUG。 这就一个很简单的代码,如果此时有线程 A 和线程 B 分别在 CPU - A 和 CPU - B 中执行这个方法,它们的操作是先将 a 从主存取到 CPU 各自的缓存中,此时它们缓存中 a 的值都是 0。 然后它们分别执行 a++,此时它们各自眼中 a 的值都是 1,之后把 a 刷到主存的时候 a 的值还是1,这就出现问题了,明明执行了两次加一最终的结果...
- 下一篇
我在阿里写代码学会的六件事
写了多年的代码,始终觉得如何写出干净优雅的代码并不是一件容易的事情。按 10000 小时刻意训练的定理,假设每天 8 小时,一个月 20 天,一年 12 个月,大概也需要 5 年左右的时间成为大师。其实我们每天的工作中真正用于写代码的时间不可能有 8 个小时,并且很多时候是在完成任务,在业务压力很大的时候,可能想要达到的目标是如何尽快的使得功能 work 起来,代码是否干净优雅非常可能没有能放在第一优先级上,而是怎么快怎么来。 在这样的情况下是非常容易欠下技术债的,时间长了,这样的代码基本上无法维护,只能推倒重来,这个成本是非常高的。欠债要还,只是迟早的问题,并且等到要还的时候还要赔上额外的不菲的利息。还债的有可能是自己,也有可能是后来的继任者,但都是团队在还债。所以从团队的角度来看,写好代码是一件非常有必要的事情。如何写出干净优雅的代码是个很困难的课题,我没有找到万能的 solution,更多的是一些 trade off,可以稍微讨论一下。 代码是写给人看的还是写给机器看的? 在大部分的情况下我会认为代码是写给人看的。虽然代码最后的执行者是机器,但是实际上代码更多的时候是给人看的。我...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- CentOS关闭SELinux安全模块
- CentOS8安装Docker,最新的服务器搭配容器使用
- SpringBoot2编写第一个Controller,响应你的http请求并返回结果
- Hadoop3单机部署,实现最简伪集群
- SpringBoot2初体验,简单认识spring boot2并且搭建基础工程
- Linux系统CentOS6、CentOS7手动修改IP地址
- Eclipse初始化配置,告别卡顿、闪退、编译时间过长
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- Windows10,CentOS7,CentOS8安装Nodejs环境
- 设置Eclipse缩进为4个空格,增强代码规范