背景:由于自家电脑太卡了,学校配了一台之前师兄们用过的电脑,于是我在新电脑上配置了各种环境,有些环境是师兄已经装好的,可以套用,但是在转移数据库的过程中,我发现了一个问题,就是新电脑的版本是mysql5.5 而 我使用的版本是mysql5.7.33 ,由于mysql5.5版本过于老旧,在执行sql文件时会出现问题,问题如下。
报错: ERROR 1293 (HY000): Incorrect table definition; there can be only one TIMESTAMP column with CURRENT_TIMESTAMP in DEFAULT or ON UPDATE clause.
原因:上面这个错误是因为在MySQL 5.5文档有这么一段话:
One TIMESTAMP column in a table can have the current timestamp as the default value for initializing the column, as the auto-update value, or both. It is not possible to have the current timestamp be the default value for one column and the auto-update value for another column.
意思是只能有一个带CURRENT_TIMESTAMP的timestamp列存在。
解决办法:我的解决版本是重新下载一个mysql5.7 但是不删除原先5.5 只是将服务改成5.7,这样也不会影响师兄的mysql5.5数据库。
步骤:
一、首先下载好一个mysql5.7版本
下载好之后解压会出现这么一个文件
二、修改my.ini将路径进行修改
修改成当前路径,要保证当前data文件里面没有东西,这是因为如果有东西会报错的。
三、更改好环境变量
将环境变量从原先5.5版本更改到5.7版本的目录中
PATH环境变量中输入
D:\xzdtools\mysql-5.7.33-winx64\mysql-5.7.33-winx64\bin
四、创建一个服务
管理员权限运行cmd,进入对应的mysql5.7文件夹\bin的目录中
输入:
mysqld install MYSQLxzd --defaults-file="d:\xzdtools\mysql-5.7.33-winx64\mysql-5.7.33-winx64\my.ini"
其中:
MYSQLxzd是服务名,可以自己定
默认路径找到mysql5.7的my.ini对应路径
创建服务成功
我们可以在服务中找到,
打开服务的方式:Win+R 输入service.msc
五、初始化服务
mysqld --initialize --console
初始化成功后会给root用户一个初始密码
A temporary password is generated for root@localhost: p<otI#srv6n7
注意:初始化服务时必须要将之前mysql5.5版本数据库先停掉,不能让它打开,否则这个没法初始化;并且之前说了data文件夹中不准有数据,有数据这里也会报错。
好了以后我们可以通过cmd进入数据库
mysql -u root -p
进入数据库先把密码改了
set password for root@localhost = password('123456');
更改了密码之后exit 我们重新登录进mysql就可以了
这个时候数据库版本变成了5.7了
同时师兄的mysql5.5仍然还在!
只是将它的关掉了,不会丢失其数据。