Unknown column 'NaN' in 'field list' 在线等

ruyiliu 2010-09-13 11:08:35
往数据库插入的时候偶尔会报这个错误,估计是连接的问题。求高手请教,在线等!!!
2010-09-13 09:54:14,593] [ERROR] (BaseDao.java:update:104)
发生错误,无法完成数据库操作,相关SQL[insert into GM_historyData values(?,?,?,?,
?,?,?,?,?,?,?)]
com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Unknown column 'NaN'
in 'field list'
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)

at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)

at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Sou
rce)
at java.lang.reflect.Constructor.newInstance(Unknown Source)
at com.mysql.jdbc.Util.handleNewInstance(Util.java:406)
at com.mysql.jdbc.Util.getInstance(Util.java:381)
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1051)
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3563)
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3495)
at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1959)
at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2113)
at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2693)
at com.mysql.jdbc.PreparedStatement.executeInternal(PreparedStatement.ja
va:2102)
at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java
:2395)
at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java
:2313)
at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java
:2298)
at org.apache.commons.dbcp.DelegatingPreparedStatement.executeUpdate(Del
egatingPreparedStatement.java:105)
at org.apache.commons.dbcp.DelegatingPreparedStatement.executeUpdate(Del
egatingPreparedStatement.java:105)
at org.unism.emb.dao.BaseDao.update(BaseDao.java:97)
at org.unism.emb.comm.executor.EmbTermDataUp.insert(EmbTermDataUp.java:1
75)
at org.unism.emb.comm.executor.EmbTermDataUp.disposeNew(EmbTermDataUp.ja
va:156)
at org.unism.emb.comm.executor.EmbExecutorThread.run(EmbExecutorThread.j
ava:115)

只是偶尔会有这个问题,大多数情况还是好的。估计不是给参数不对。
...全文
1265 10 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
xinmindong 2010-09-26
  • 打赏
  • 举报
回复
写入的数据是无穷大的数,仔细检查
lishuaijun0731 2010-09-13
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 qqcrazyboy 的回复:]
NaN=not a number
[/Quote]说错了,我想说这个对
ruyiliu 2010-09-13
  • 打赏
  • 举报
回复
有时好,有时不好,这个貌似不是数据类型的问题!
lishuaijun0731 2010-09-13
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 ruyiliu 的回复:]
什么意思?
[/Quote]说的对!
哈特中尉 2010-09-13
  • 打赏
  • 举报
回复
数据类型不匹配
dqsweet 2010-09-13
  • 打赏
  • 举报
回复
不能插入'NaN’
哈特中尉 2010-09-13
  • 打赏
  • 举报
回复
NaN=not a number
ruyiliu 2010-09-13
  • 打赏
  • 举报
回复
什么意思?
e9876 2010-09-13
  • 打赏
  • 举报
回复
未知列:“无效数字”?
seelydia0000 2010-09-13
  • 打赏
  • 举报
回复
NaN是一个值类型,同是也是一个数值.意思是Not A Number,这个都知道是什么意思.值比较特殊,特殊在于NaN是一个数字,是一个与任何数值都不相等的数字.

javascript:alert(typeof(NaN));可以完全证实,这是一个数字类型的值.也就是说NaN是当时转换时一种出错的策略,转成一个谁也不认识的数字而已.从这个角度上理解它是一个数字,可以理解成数学中的无穷大或是无穷小.但与数学中一个理论是相悖的,我们常说,无穷大加1等于无穷大是错误的.正是无空大加1不等于无穷大,所以无穷大也不等于它自己本身.所以数值NaN连自身都不会相等的.

而在javascript中NaN既然作为一个无穷大,那么它表示的就不再是一个值,而是一类值,所以有时可视NaN是一个类型.

正是这样的边缘问题,可以导致作如下测试是正确的:

javascript:alert(NaN+1);结果是无穷大.
但唯一的是NaN是一个不确定数,所以NaN不能等于NaN.

这好比是randomise中的random,random +1 还是一个不确定的数值,但random不会等于random一样.两者的区别在于random能生成一个确定数,但本身不确定.而NaN生成的就是一个不确定数.

67,543

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧