我正在从事一个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)
代码是
s.executeUpdate(query);查询在哪里
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
这张桌子看起来是:
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)输入的数据看起来如下:
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发布于 2012-06-26 16:32:19
你怎么能说在mysql控制台上接受查询呢?
查看执行状态语句:
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中存在问题。
解决办法是:
decimal和double之上使用float或real数据类型。据报道,在以下几个方面存在bug和解决办法:
https://stackoverflow.com/questions/11208701
复制相似问题