mysql.jdbc异常在数据类型INTEGER的有效范围之外

时间:2014-02-14 03:10:52

标签: java mysql exception jdbc int

当我尝试从Java文件访问数据库(BIGINT)的内容时,我遇到了错误。我无法弄清楚此异常的修复方法。

我收到以下错误:

com.mysql.jdbc.exceptions.jdbc4.MySQLDataException:
    '5.62949953421312E15' in column '1' is outside valid range for the datatype INTEGER.

Java代码:

long  pID=0;

SQLStatement = connection.createStatement();
String Query101 = "select projectID from Project";
ResultSet rs101 = SQLStatement.executeQuery(Query101);
while (rs101.next()) {
    pID = rs101.getLong("ProjectId");
}

SQL代码:

CREATE TABLE Project (projectID bigint(20) Primary key) 

我正在使用的数据库表中projectID的值为5629499534213120

3 个答案:

答案 0 :(得分:1)

你的pID是long类型,它是4个字节,最大值是2 ^ 31-1 = 2,147,483,647。 所以你不能在pID = rs101.getLong(“ProjectId”)中为它分配5.62949953421312E15;

答案 1 :(得分:1)

查看this page后查看是否存在任何已知的MySQL Connector / J问题。我相信您的 ProjectID 列实际上是一个INT(INTEGER的同义词),正如异常所示。我会查看你的 Project 表并确保该列真的是BIGINT。

BIGINT是MySQL的64位有符号整数,就像long是Java的64位有符号整数一样。意思是它们共有相同的范围-2 63 到2 63 - 1。

您使用的是正确的方法。但我认为你的列的数据类型不是你想象的那样。

答案 2 :(得分:0)

如果封装此表,则可以在执行set operation

时查看传输类型是否很长

像这样enter image description here

我在这里没有将类型转为导致此问题