今天,自己作死,往自己笔记本上装了一个mysql的8.0版本,由于公司项目使用的是其他版本,故爬坑到现在,网上查到的解决方案都太零散了,所以在这里做个汇总,希望对需要的朋友有用。个人文采有限,凑活看吧。哈哈。。。。。
首先,刚开始项目报直接报错,Could not retrieve transation read-only status server
这个错误,首先查看mysql数据库的事务隔离级别:
SHOW VARIABLES LIKE 'transaction_isolation';
如果返回结果为
REPEATABLE-READ
则执行
SET GLOBAL transaction_isolation='READ-COMMITTED'; -- 修改数据库的隔离级别。
set session transaction isolation level read uncommitted; --提交数据库的当前session的事务。
如下图所示:
如果要永久更改,则还需修改my.ini,在后面追加:
#可选参数有:READ-UNCOMMITTED, READ-COMMITTED, REPEATABLE-READ, SERIALIZABLE.
transaction-isolation = READ-COMMITTED
如下图所示:
做完以上步骤,如果项目还报以上错误,则检查mysql驱动包,mybatis的版本:
<mysql.driver.version>8.0.13</mysql.driver.version>
<mybatis.version>3.2.8</mybatis.version>
<mybatis-spring.version>1.3.1</mybatis-spring.version>
修改完以上版本后,则可能报如下错误信息:
原因:数据库驱动com.mysql.jdbc.Driver'已经被弃用了、应当使用新的驱动com.mysql.cj.jdbc.Driver'
需要修改jdbc驱动为:
将jdbc.properties配置 .com.mysql.jdbc.Driver 改为 com.mysql.cj.jdbc.Driver
修改完成后,启动项目,继续报如下错误信息:
Error querying database. Cause: java.sql.SQLException: The server time zone value '�й���ʱ��' is unrecognized or represents more than one time zone. You must configure either the server or JDBC driver (via the serverTimezone configuration property) to use a more specifc time zone value if you want to utilize time zone support.
在jdbc.url后面追加:
&serverTimezone=GMT%2B8&useSSL=false
ok 到这里,鄙人项目启动成功,这些错误的根本原因,这里就不在详细描述了,大家可以去网上查找相关资料,鄙人水平有限,了解到的就这么多,有不对的地方,欢迎大家纠正。