Mysql5.5升级到5.7的过程已经踩到的坑
故事是这样⼦的,我们公司有⼏台⽼的mysql版本是5.5的,最近项⽬做了⼀些升级增加了⼏个字段,⽤spring-data-jpa⾃动刷新表结构的时候报错了,原因是mysql5.5的版本不⽀持⼀张表⾥⾯有两个以上的 current_timestamp 作为default value。所以就要考虑升级下数据库
先到服务器上⾯看了下版本
再看了下源
哦,顺带提⼀句,我们公司在⽤的aws 的 ec2 ,所以都是amz的源
试了下 yum update mysql-server 然后并没什么卵⽤,所以继续往下搞。
⽹上看了好多都说是先把旧版本的数据库卸载了再⽤装新版本的数据库,那我的⾥⾯的数据咋办,为了保险起见,我先办数据库做了个备份,⼀个库⼀个库的备份,我看mysql库⾥⾯也配了好多⽤户和权限,就顺便也把mysql备份了,然后开搞。
1、卸载数据库
yum remove mysql-server
但是我们这边装的好像不太⼀样,我就把刚才yum查到的⼏个都卸载了。smarty pants绘本
卸载前记得把mysql服务关掉,要不然装新版本之后⽤mysql --version 查看是5.7 mysql 登录进去还是5.5然后重启服务就各种问题。因为有些⽂件没被删掉,导致新装的数据库好奇怪的样⼦。。。
2、安装新数据库
yum search mysql57
先看看有什么版本可以选,这个没啥说的直接
yum install msyql57-server.x86_64
安装下来就ok,来看看都装了些啥东西
很奇怪⼀点就是mysql-config依赖竟然还是5.5的,不过⽤起来没发现啥问题
3、配置
安装好了之后修改以下myf
我的服务器上⾯是在/etc/myf 不知道其它的镜像有没有变化北京c语言培训班
在配置的时候我突然想到数据存储的空间是还在的啊,配过去看看能⽤不
sql coalesce函数用法于是就在myf配了这⼀⾏(5.5的好多配置都弃⽤了,之前的myf⾥⾯的都要删⼀删要不然启动时会报错)
配置之后果断启动服务
service mysqld start
果然报错了
w3c标准盒子模型示意图看了下启动⽇志
[ERROR] Fatal error: mysql.user table is damaged. Please run mysql_upgrade.
ERROR: Zend_Db_Adapter_Exception: SQLSTATE[HY000] [2002] No such file or directory
Additionally, an exception has occurred while trying to report this error: Zend_Exception
No entry is registered for key 'translate' (Abstract.php:144)
具体解决⽅法如下
discuz论坛主题
a. 登录到那台服务器主机上⾯
b.  Add skip-grant-tables in /etc/myf file under [mysqld] section 意思就是开启安全模式(不验证密码什么的)
c.  service mysqld start
d.  mysql_upgrade
e.  service mysqld restart
我执⾏了⼀下mysql_upgrade
查了查官⽅⽂档,⼤体意思就是升级之后好多东西不怎么兼容,官⽅提供这个脚本来修复之前的⼯作空间果然是⽆缝升级mysql数据库中的⽤户都还在之前的数据库也没有受到影响
mysql无法连接到服务器⾄此升级完成

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。