错误:SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@5209b429] was not registered for synchronization because synchronization is not active
现象:在做SSM整合项目时,遇见上述错误,项目能够运行,但是会遇见下面这种情况
即页面无法跳转,检查状态发现,请求状态正常,如下图:
但是在output中没有错误提示。最后,在mybatis-config.xml中,添加日志,才能显示上述错误。
<settings>
<!--标准日志工厂实现STDOUT_LOGGING,不需要导包-->
<setting name="logImpl" value="STDOUT_LOGGING"/>
<!--LOG4J的实现-->
<!-- <setting name="logImpl" value="LOG4J"/>-->
</settings>
最后,经过debug发现,这是由于NullPointerException导致的。
具体原因:在数据库中,将表的id字段设置为自增长,并且不为null.
但是在插入数据时,只插入了name和value字段,id默认为null,这与数据库中(id不为null)冲突。
解决过程:关于数据库中有自增主键时如何插入数据?
发现自己的插入语句,并没有写错。发现是忘记加参数类型,但是仍然会报一样的错误。
最后,发现根据
STDOUT_LOGGING日志没什么作用,将日志改为LOG4J,出现以下错误
循环出现这个问题(会导致dubbo调用服务连接超时,从而找不到服务):
18:58:10.177 [Druid-ConnectionPool-Create-444276457] ERROR com.alibaba.druid.pool.DruidDataSource - create connection SQLException, url: jdbc:mysql://localhost:3306/mybatis?useSSl=true&useUnicode=true&characterEncoding=UTF-8&serverTimezone=UTC, errorCode 1045, state 28000
java.sql.SQLException: Access denied for user '�鑫'@'localhost' (using password: YES)
at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:129) ~[mysql-connector-java-8.0.18.jar:?]
at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:97) ~[mysql-connector-java-8.0.18.jar:?]
at com.mysql.cj.jdbc.exceptions.SQLExceptionsMapping.translateException(SQLExceptionsMapping.java:122) ~[mysql-connector-java-8.0.18.jar:?]
at com.mysql.cj.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:836) ~[mysql-connector-java-8.0.18.jar:?]
at com.mysql.cj.jdbc.ConnectionImpl.<init>(ConnectionImpl.java:456) ~[mysql-connector-java-8.0.18.jar:?]
at com.mysql.cj.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:246) ~[mysql-connector-java-8.0.18.jar:?]
at com.mysql.cj.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:199) ~[mysql-connector-java-8.0.18.jar:?]
at com.alibaba.druid.pool.DruidAbstractDataSource.createPhysicalConnection(DruidAbstractDataSource.java:1570) ~[druid-1.1.13.jar:1.1.13]
at com.alibaba.druid.pool.DruidAbstractDataSource.createPhysicalConnection(DruidAbstractDataSource.java:1636) ~[druid-1.1.13.jar:1.1.13]
at com.alibaba.druid.pool.DruidDataSource$CreateConnectionThread.run(DruidDataSource.java:2550) [druid-1.1.13.jar:1.1.13]
即mysql连接错误errorCode 1045, state 28000
mysql数据库errorCode 1045, state 28000
在每个配置信息前面加上 jdbc.成功解决问题