关于CRMEB-JAVA多商户项目数据库升级MYSQL8说明

68 阅读2分钟

关于CRMEB-JAVA多商户项目数据库升级MYSQL8说明

1.准备工作

准备一个mysql8数据库,并导入数据。

如果服务器是内存在4G,使用宝塔等方式,可能无法安装mysql8数据库,考虑自行在服务器编码式安装后,外连到宝塔或其他面板上。

# Centos服务器编译安装Mysql8数据库

2.pom.xml文件修改

将原来的mysql依赖升级为8.0.33版本

<dependency>  
    <groupId>mysql</groupId>  
    <artifactId>mysql-connector-java</artifactId>  
    <version>8.0.33</version>  
</dependency>

3.yml配置文件修改

修改
datasource: driver-class-name: com.mysql.jdbc.Driver
为
datasource: driver-class-name: com.mysql.cj.jdbc.Driver

image.png

4.代码model类关键字处理

如果model类中包含rank之类的mysql8保留关键字,需要进行处理

添加@TableField(value = "xxxx")注解,如下图

image.png

5.代码sql处理

主要是因为mysql高版本中使用了ONLY_FULL_GROUP_BY模式

要求group by后的字段要与select后的查询字段一致,否则就会报错。

所以处理项目中使用group by 语句的地方。

a.Mysql-plus相关

这种可是全文搜索 groupBy(进行搜索,修改示例如下:

image.png

如果不是group by 中的字段,也不是公式字段,需要使用ANY_VALUE()函数进行处理

有些order by 中的字段,需要使用MAX()函数进行处理

b.Mapper.xml文件

同理,需要修改sql中的select查询字段。

6.     不修改sql处理方法

如果不想修改sql,就要将ONLY_FULL_GROUP_BY模式去掉,有三种方案。

方案一:navcat处理

打开navcat

使用sql 查询

select @@GLOBAL .sql\_mode;

image.png

去掉ONLY_FULL_GROUP_BY,重新设置值。

set @@global.sql\_mode='STRICT\_TRANS\_TABLES,NO\_ZERO\_IN\_DATE,NO\_ZERO\_DATE,ERROR\_FOR\_DIVISION\_BY\_ZERO,NO\_ENGINE\_SUBSTITUTION';

方案二: 修改配置my.ini文件

在mysql安装目录下,修改my.ini文件

sql\_mode=STRICT\_TRANS\_TABLES,NO\_ZERO\_IN\_DATE,NO\_ZERO\_DATE,ERROR\_FOR\_DIVISION\_BY\_ZERO,NO\_AUTO\_CREATE\_USER,NO\_ENGINE\_SUBSTITUTION

然后重启mysql数据库

方案三:修改my.cnf文件

编辑my.cnf文件

vim /etc/my.cnf

  在[mysqld]下面添加一行

sql\_mode=STRICT\_TRANS\_TABLES,NO\_ZERO\_IN\_DATE,NO\_ZERO\_DATE,ERROR\_FOR\_DIVISION\_BY\_ZERO,NO\_AUTO\_CREATE\_USER,NO\_ENGINE\_SUBSTITUTION

然后重启mysql数据库