mysql 5.0升级到8.0

发布时间 2023-08-14 16:01:49作者: 胡子就不刮

1. 替换新的驱动jar包

        <dependency>
            <groupId>com.mysql</groupId>
            <artifactId>mysql-connector-j</artifactId>
            <version>8.0.31</version>
        </dependency>
            
2. 替换新驱动类
com.mysql.cj.jdbc.Driver

mysql8.0以上的版本驱动更新成com.mysql.cj.jdbc.Driver
其实com.mysql.cj.jdbc.Driver继承了com.mysql.jdbc.Driver,如果不修改的话也能启动成功,但是会有如下告警信息,所以安全起见,还是需要修改此些配置项
Loading class `com.mysql.jdbc.Driver'. This is deprecated. The new driver class is `com.mysql.cj.jdbc.Driver'. The driver is automatically registered via the SPI and manual loading of the driver class is generally unnecessary.

3. 替换新url连接,需要指定时区
jdbc.url=jdbc:mysql://localhost:3306/项目名称?serverTimezone=UTC&characterEncoding=utf-8

GMT:Greenwich Mean Time,格林尼治平时,又称格林尼治平均时间或格林尼治标准时间。是指位于英国伦敦郊区的皇家格林尼治天文台的标准时间。
GMT存在较大误差,因此现在已不再被作为标准时间使用。现在的标准时间,是由原子钟报时的协调世界时(UTC)
UTC:Universal Time Coordinated,中文名称:世界标准时间或世界协调时。可以理解为全世界都公用的一个时间。它实际上反映了一种约定,即为全世界所认可的一个统一时间,而不是某特定地区的时间。
中国人常用的北京时间比UTC时间快8个小时。也即UTC时间凌晨0点时,北京时间已经是早上8点,这就是为啥全世界人往往不直接用UTC时间计时原因。
CST:China Standard Time,即中国标准时间。在时区划分上,属东八区,比协调世界时早8小时,记为UTC+8。

 

注意事项:

1、 可能存在字符集问题,查看collation_connection的配置:show variables WHERE Variable_name like 'collation%';

org.springframework.jdbc.UncategorizedSQLException: PreparedStatementCallback; uncategorized SQLException for SQL [SELECT NEXTVAL('XXXX') SEQ FROM DUAL]; SQL state [HY000]; error code [1267]; Illegal mix of collations (utf8mb4_0900_ai_ci,IMPLICIT) and (utf8mb4_general_ci,IMPLICIT) for operation '='; nested exception is java.sql.SQLException: Illegal mix of collations (utf8mb4_0900_ai_ci,IMPLICIT) and (utf8mb4_general_ci,IMPLICIT) for operation '='

如果不是utf8mb4_general_ci,则需要通过以下命令修改

 

SET PERSIST collation_connection='utf8mb4_general_ci';
SET PERSIST default_collation_for_utf8mb4='utf8mb4_general_ci';

 

2、 保留字问题,新增保留字需要加标识处理。例如rank等新增保留字

MySQL 8.0 新增的关键字和保留字:

带(R)标识的为保留字。

ACTIVE

ADMIN

ARRAY

ATTRIBUTE

BUCKETS

CLONE

COMPONENT

CUME_DIST (R)

DEFINITION

DENSE_RANK (R)

DESCRIPTION

EMPTY (R)

ENFORCED

ENGINE_ATTRIBUTE

EXCEPT (R)

EXCLUDE

FAILED_LOGIN_ATTEMPTS

FIRST_VALUE (R)

FOLLOWING

GEOMCOLLECTION

GET_MASTER_PUBLIC_KEY

GROUPING (R)

GROUPS (R)

HISTOGRAM

HISTORY

INACTIVE

INVISIBLE

JSON_TABLE (R)

JSON_VALUE

LAG (R)

LAST_VALUE (R)

LATERAL (R)

LEAD (R)

LOCKED

MANAGED

MASTER_COMPRESSION_ALGORITH

MSMASTER_PUBLIC_KEY_PATH

MASTER_TLS_CIPHERSUITES

MASTER_ZSTD_COMPRESSION_LEVEL

MEMBER

NESTED

NETWORK_NAMESPACE

NOWAIT

NTH_VALUE (R)

NTILE (R)

NULLS

OF (R)

OFF

OJ

OLD

OPTIONAL

ORDINALITY

ORGANIZATION

OTHERS

OVER (R)

PASSWORD_LOCK_TIME

PATH

PERCENT_RANK (R)

PERSIST

PERSIST_ONLY

PRECEDING

PRIVILEGE_CHECKS_USER

PROCESS

RANDOM

RANK (R)

RECURSIVE (R)

REFERENCE

REQUIRE_ROW_FORMAT

RESOURCE

RESPECT

RESTART

RETAIN

RETURNING

REUSE

ROLE

ROW_NUMBER (R)

SECONDARY

SECONDARY_ENGINE

SECONDARY_ENGINE_ATTRIBUTE

SECONDARY_LOAD

SECONDARY_UNLOAD

SKIP

SRID

STREAM

SYSTEM (R)

THREAD_PRIORITY

TIES

TLS

UNBOUNDED

VCPU

VISIBLE

WINDOW (R)

MySQL 8.0 移除的关键字和保留字:

ANALYSE

DES_KEY_FILE

PARSE_GCOL_EXPR

REDOFILE

SQL_CACHE

 

3、GROUP BY DESC/ASC不支持
 
4、表外键不可超过64个字符

5、SQL MODEL,当前不支持NO_AUTO_CREATE_USER,检查相关影响

6、区分大小写

7、datetime值区间在"1000-01-01 00:00:00"至"9999-12-31 23:59:59"