【exceptions】简单异常汇总

这个文章记录平时开发中遇到的简单异常的现场和自己解决的方法

java.sql.SQLException: Only dates in the AD era are accepted.

  • 描述:在接口的开发中遇到一个问题,把对方表中的数据导入到本地数据库的时候mybatis抛出这个错误
  • 原因:对方的数据中一个时间的字段中存在错误的数据 0000-00-00 00:00:00 ,mybatis插入数据库的时候发现解析后的时间年份小于公元后1年,抛出了这个异常
  • 解决:对数据进行清洗
  • ps:异常中的AD意思就是公元后的意思,所以异常的完整意思是:只能接受公元后范围的日期

java.lang.NoSuchFieldError: XXX

  • 描述:编译通过,实际运行时报错
  • 原因:编译的依赖有问题
  • 解决:maven clean 后 install 一下解决

java.sql.DataTruncation: Data truncation

  • 描述:数据库写入失败
  • 原因:一般是字符串字段插入的值超过了数据库字段的长度
  • 解决:合理调整插入字符串长度 OR 增长数据库字段长度

Invalid byte 3 of 3-byte UTF-8 sequence

  • 描述:联调接口的时候发现这个错误,接口双方说好的编码方式是UTF-8,但是当我把xml发过去以后,对方的系统出现这个错误,这个错误是因为xml中带有中文信息,在解析中文的时候编码格式的错误
  • 原因:实际编码环境不一致
  • 解决:将原来的 xml 编码格式
<?xml version="1.0" encoding='UTF-8'?>
<aaa>
...
</aaa>

改成:

<?xml version="1.0" encoding='gbk'?>
<aaa>
...
</aaa>

laypage is not a valid module

  • 描述:在使用layui官网举例的分页功能的时候,发现并没有标签出来,查看console,发现有错误提示:laypage is not a valid module
  • 原因:估计是包引入先后的问题
  • 解决:网上查找资料后,找到了解决方法,就是在加载layui.js的后面再加载jquery.js
<script src="/layui/layui.js"></script>
<script src="/layui/lay/modules/jquery.js"></script>

java.net.MalformedURLException: no protocol

  • 描述:在用java模拟访问http请求的时候出现的异常
  • 原因:protocol 是协议的意思, 意思是没有说明访问遵循的协议
  • 解决:在访问的url前面加上必要的协议, 如 http://

mybatis抛出异常, Caused by: java.io.IOException: Stream closed

  • 描述:开发中配置多数据源的时候遇到一个问题,在配置多个SqlSessionFactory时用同一个配置文件,在第二个读取配置文件的地方抛出了这个异常
  • 原因:
    image
    此处的第二个reader在build的方法内部实际已关闭, 所以需要一个新的reader重新获取配置文件
  • 解决:再次读取这个配置文件
    image

SLF4J: Failed to load class “org.slf4j.impl.StaticLoggerBinder”.

  • 描述:使用 slf4j 打印日志时抛出这个异常
SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder".
SLF4J: Defaulting to no-operation (NOP) logger implementation
SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details.
  • 原因:包使用错误,不是只使用 slf4j-api 一个包,而是应该再加上 slf4j-log4j12 包。因为 slf4j 需要一个实现的日志工具类,slf4j 可以认为是对日志工具类的加强作用,所以前提是需要这么一个日志工具类。
  • 解决:依赖中添加 slf4j-log4j12 包,注意版本。

java.sql.SQLException: The SQL statement must not be null or empty.

  • 描述:使用druid连接池配置完参数进行连接测试的时候出现这个问题
java.sql.SQLException: The SQL statement must not be null or empty.
	at net.sourceforge.jtds.jdbc.JtdsStatement.executeImpl(JtdsStatement.java:757) ~[jtds-1.3.1.jar:1.3.1]
	at net.sourceforge.jtds.jdbc.JtdsStatement.execute(JtdsStatement.java:1282) ~[jtds-1.3.1.jar:1.3.1]
	at com.alibaba.druid.filter.FilterChainImpl.statement_execute(FilterChainImpl.java:2958) ~[druid-1.1.10.jar:1.1.10]
	at com.alibaba.druid.filter.FilterAdapter.statement_execute(FilterAdapter.java:2473) ~[druid-1.1.10.jar:1.1.10]
	at com.alibaba.druid.filter.FilterEventAdapter.statement_execute(FilterEventAdapter.java:188) ~[druid-1.1.10.jar:1.1.10]
	at com.alibaba.druid.filter.FilterChainImpl.statement_execute(FilterChainImpl.java:2956) ~[druid-1.1.10.jar:1.1.10]
	at com.alibaba.druid.proxy.jdbc.StatementProxyImpl.execute(StatementProxyImpl.java:147) ~[druid-1.1.10.jar:1.1.10]
	at com.alibaba.druid.pool.vendor.MSSQLValidConnectionChecker.isValidConnection(MSSQLValidConnectionChecker.java:50) ~[druid-1.1.10.jar:1.1.10]
	at com.alibaba.druid.pool.DruidAbstractDataSource.validateConnection(DruidAbstractDataSource.java:1346) ~[druid-1.1.10.jar:1.1.10]
	at com.alibaba.druid.pool.DruidAbstractDataSource.createPhysicalConnection(DruidAbstractDataSource.java:1633) ~[druid-1.1.10.jar:1.1.10]
	at com.alibaba.druid.pool.DruidDataSource$CreateConnectionThread.run(DruidDataSource.java:2468) ~[druid-1.1.10.jar:1.1.10]
  • 原因:参数少配置了validation-query,这个参数是测试连接用的
  • 解决:配置文件中加一个参数
spring:
  datasource:
    druid:
      validation-query: select 'x'
  • PS:如果是在java类中配置,在DruidDataSource对象中加一个这个属性就可以了,这是DruidDataSource的属性,在DataSource对象中不能设置。

Null value was assigned to a property of primitive type setter of com.xxx

  • 描述:用Hibernate查询时抛出这个异常
  • 原因:数据库中此字段为null,但是model中定义类型为int,int不是包装类,无法接收null值
  • 解决:将model中的int字段类型修改成Integer

Error setting non null for parameter #31 with JdbcType null .

  • 描述:用mybatis插入数据时抛出异常,检查sql没有问题
  • 原因:mybatis的xml中插入的sql中有注释,这个造成了影响,如:
<insert id="insert" parameterType="com.model.TUser">
insert into t_user
(
id,
code,
name,
-- age,
sex
) 
values 
(
#{id},
#{code},
#{name},
-- #{age},
#{sex}
)
</insert>
  • 解决:删除被注释的部分,如:
<insert id="insert" parameterType="com.model.TUser">
insert into t_user
(
id,
code,
name,
sex
) 
values 
(
#{id},
#{code},
#{name},
#{sex}
)
</insert>

no such file or directory, scandir ‘D:\workspace\xxx\yyy\node_modules\node-sass\vendor’

  • 描述:view.js项目刚从git上拉下来,install完后run失败,报这个错误
  • 原因:不知道什么错误
  • 解决:idea跑这个命令:
npm rebuild node-sass

java.sql.SQLException: ORA-02289: 序列不存在

  • 描述:oracle数据库插入数据使用序列的nextVal的时候失败
  • 原因:使用的序列不存在
  • 解决:使用已经存在的序列或者创建一个新的序列
-- 查询存在的序列
select * from user_sequences;

-- 创建新的序列
create sequence SEQ_T_USER
minvalue 1
maxvalue 9999999999
start with 1
increment by 1
cache 20;

ORA-01008: 并非所有变量都已绑定

  • 描述:Java程序对oracle程序进行更新时抛出异常,但是用Navicat没有问题
  • 原因:晚上很多博客说是因为字段不对,我检查了很多次发现没有问题,后来看到一个说要字段类型一直,才发现这个问题
  • 解决:数据库中的该字段是数字类型的,但是程序中传了String,改成long后问题解决

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值