mysql 5.0升级到8.0
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
5、SQL MODEL,当前不支持NO_AUTO_CREATE_USER,检查相关影响
6、区分大小写
7、datetime值区间在"1000-01-01 00:00:00"至"9999-12-31 23:59:59"