目录
问题2:The server time zone value 'Öйú±ê׼ʱ¼ä' is unrecognized or represents more than one time zone.
问题1:Caused by: java.sql.SQLException: Access denied for user 'root'@'localhost' (using password: YES)
先看一下配置是否和我一样,这里是我的“报错”配置:当然如果你使用application.properties文件进行配置的,那可以跳过了
错误信息:Caused by: java.sql.SQLException: Access denied for user 'root'@'localhost' (using password: YES)
解决方法:
说实话,真的被恶心到了,百度上很多人说这是权限的问题,还有就是配置错了,这次还真的被恶心到了,错误提示是密码的问题,但是这个密码我一直在用,都没改过,所以如果你的账号在其他项目一直用都没有问题,在这里突然出现什么拒绝访问的问题,这里可以明确说是配置错了,不是什么用户账号权限的问题,这里主要是yml配置文件的问题,主要是因为yml
是区分数据类型的,所以如果用户名或者密码是数字的话,就要注意了。所以如果password
为000000
的话,最终获取到的值是0
,显然不对,那么6
个0
怎么表示呢?只能用字符串"000000"
,这样获取到的密码就是正确的了!
如果以上信息都配置正确的话,很可能是数据库授权失败,所以请先进数据库对当前远程用户授权。
成功启动:
问题2:The server time zone value 'Öйú±ê׼ʱ¼ä' is unrecognized or represents more than one time zone.
我的配置
错误信息:
解决方法:
这里先说一下MySQL驱动版本的问题
com.mysql.jdbc.Driver 和 com.mysql.cj.jdbc.Driver的区别
- com.mysql.jdbc.Driver 是 mysql-connector-java 5中的,
- com.mysql.cj.jdbc.Driver 是 mysql-connector-java 6中的
JDBC连接Mysql6 com.mysql.cj.jdbc.Driver, 需要指定时区serverTimezone,否则就会报错
在设定时区的时候,如果设定serverTimezone=UTC,会比中国时间早8个小时,如果在中国,可以选择Asia/Shanghai或者Asia/Hongkong,例如:
url: jdbc:mysql://localhost/db?serverTimezone=Asia/Shanghai
所以在连接数据库时需要设置时区即可解决
问题3: 单元测试方法报错:could not initialize proxy - no Session
原因:出现该错误的原因是Hibernate使用sessionFactory来管理session,我们每进行一次数据库操作时都会新建一个session对象,当我们操作完成后,hibernate就会在dao层立即关闭该session。所以当我们操作类中另一个类的具体属性时,因为session已经关闭,就会报错。
org.hibernate.LazyInitializationException: could not initialize proxy [com.example.demo.domain.User#1] - no Session
at org.hibernate.proxy.AbstractLazyInitializer.initialize(AbstractLazyInitializer.java:155)
at org.hibernate.proxy.AbstractLazyInitializer.getImplementation(AbstractLazyInitializer.java:268)
at ...
解决方法:在单元测试的方法上添加事务控制注解,开启每次操作数据库的session不会失效
由于本人水平有限,如有不足或错误之处,欢迎各位大大下方留言指教