首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >声明。executeUpdate给出列X在第1行错误时的截断日期

问声明。executeUpdate给出列X在第1行错误时的截断日期
EN

Stack Overflow用户
提问于 2012-06-26 13:44:52
回答 1查看 1.3K关注 0票数 1

我正在从事一个java项目,该项目试图通过tsv将数据插入mysql数据库。在运行此程序时,它会给出以下错误:

线程"main“中的异常:在com.mysql.jdbc.SQLError.createSQLException(SQLError.java:946) at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:2985) at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1631) at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:1723) at com.mysql.jdbc.Connection.execSQL(Connection.java:3277的第1行为列‘服务’截断的数据)在com.mysql.jdbc.Statement.executeUpdate(Statement.java:1402) at com.mysql.jdbc.Statement.executeUpdate(Statement.java:1317) at LogProcessing.LogReader.addDay(LogReader.java:313) at LogProcessing.LogReader.updateTables(LogReader.java:177) at LogProcessing.LogReader.start(LogReader.java:59) at LogProcessing.LogReader.main(LogReader.java:45)

代码是

代码语言:javascript
复制
s.executeUpdate(query);

查询在哪里

代码语言:javascript
复制
LOAD DATA INFILE 'C:/temp/BA5770/tmp/temp.dat'INTO TABLE thisweek FIELDS TERMINATED BY '    ';

奇怪的是,当我复制这个查询并在mysql中直接输入它时,它就被接受了。

本周mysql>加载数据INFILE‘C:/temp/ BY 5770/tmp/tem.dat’‘INTO表字段终止于“;查询确定,受影响的行有76932行,65535次警告(2.44秒)记录: 76932删除:0跳过:0警告: 76932

这张桌子看起来是:

代码语言:javascript
复制
mysql> show columns from thisweek;
+------------+----------------------+------+-----+---------+-------+
| Field      | Type                 | Null | Key | Default | Extra |
+------------+----------------------+------+-----+---------+-------+
| functionID | smallint(5) unsigned | YES  | MUL | NULL    |       |
| serverID   | tinyint(3) unsigned  | YES  |     | NULL    |       |
| date       | date                 | YES  |     | NULL    |       |
| time       | time                 | YES  |     | NULL    |       |
| calls      | int(10) unsigned     | YES  |     | NULL    |       |
| meanTime   | float                | YES  |     | NULL    |       |
| WSC        | float                | YES  |     | NULL    |       |
| THM_DB2    | float                | YES  |     | NULL    |       |
| DEP        | float                | YES  |     | NULL    |       |
| Tandem     | float                | YES  |     | NULL    |       |
| LDAP       | float                | YES  |     | NULL    |       |
| PS         | float                | YES  |     | NULL    |       |
| IAV        | float                | YES  |     | NULL    |       |
| IMS        | float                | YES  |     | NULL    |       |
| Services   | float                | YES  |     | NULL    |       |
+------------+----------------------+------+-----+---------+-------+
15 rows in set (0.00 sec)

输入的数据看起来如下:

代码语言:javascript
复制
31  0   20111207    235900  19  0.0 -1.0    -1.0    -1.0    -1.0    -1.0    -1.0    -1.0    -1.0    -1.0
32  0   20111207    235900  405 60.94   0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
33  0   20111207    235900  1   32.0    24.0    14.0    0.0 0.0 0.0 0.0 8.0 0.0 24.0
34  0   20111207    235900  3   39.0    36.0    21.0    6.0 0.0 0.0 0.0 8.0 0.0 32.0
35  0   20111207    235900  27  9.44    -1.0    -1.0    -1.0    -1.0    -1.0    -1.0    -1.0    -1.0    -1.0
EN

回答 1

Stack Overflow用户

发布于 2012-06-26 16:32:19

你怎么能说在mysql控制台上接受查询呢?

查看执行状态语句:

代码语言:javascript
复制
Query OK, 76932 rows affected, 65535 warnings (2.44 sec)
Records: 76932 Deleted: 0 Skipped: 0 Warnings: 76932

对于76932记录,生成的警告是76932,这意味着每个记录都有一些可调整的错误。

执行show warnings查询后,在mysql控制台执行load data ...

也许您会看到大多数... data truncated ...警告消息。

使用float和double在MySQL中存在问题。

解决办法是:

  1. 在decimal和double之上使用float或real数据类型。
  2. 在数据文件中使用正确的浮动精度。但是对于大型数据文件来说,这是一件乏味的事情。

据报道,在以下几个方面存在bug和解决办法:

  1. In floating point have the same problem with FLOAT and DOUBLE. REAL and DECIMAL work fine.
  2. I don't know What happenig with Float and Double, but my shot is the ROUND made by Float... With DECIMAL will work fine.
  3. FLOAT and DOUBLE mess up with data probaly by they round procedures.
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11208701

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档