Java 插入时MysqlDataTruncation错误

Java 插入时MysqlDataTruncation错误,java,mysql,jdbc,Java,Mysql,Jdbc,正在连接到选定的数据库… 已成功连接数据库… 正在将记录插入表… com.mysql.jdbc.MysqlDataTruncation:数据截断:第1Goodbye行“st_phno”列的值超出范围 at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:4072) at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:4006) at com.mysql.jdbc.MysqlIO.

正在连接到选定的数据库…
已成功连接数据库…
正在将记录插入表…
com.mysql.jdbc.MysqlDataTruncation:数据截断:第1Goodbye行“st_phno”列的值超出范围

at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:4072)
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:4006)
at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:2468)
at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2629)
at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2713)
at com.mysql.jdbc.StatementImpl.executeUpdate(StatementImpl.java:1794)
at com.mysql.jdbc.StatementImpl.executeUpdate(StatementImpl.java:1712)
at insert.Katal.main(Katal.java:24)
我已经创建了名为Katal的数据库和名为Student的数据库中的表。 我给了一列作为(st_phno int(10))。 当我将st_phno的值插入为9876543210时,它抛出上述异常。 帮助从中更正程序,整数的范围如下:

-2147483648 to 2147483647
当您尝试将值
9876543210
插入
st_phno
列时,MySQL首先必须运行有效性检查,确保插入的整数在范围内。此检查失败,因为它大于允许的最大值
2147483647

您得到的错误有点误导,因为您的insert甚至没有达到
varchar
的case,因为insert。该消息显示MySQL拒绝将完全有效的10个字符的字符串插入到宽度为10的列中。这不是错误消息的原因,您可以通过插入例如十位数字
2000000
来验证这一点

解决方法:

由于
st_phon
列是
varchar
,因此可以
在整数中插入一个字符串。因此,我希望以下查询能够顺利进行:

INSERT INTO Student (`st_phon`) VALUES ('9876543210');
这应该是可行的,因为不再需要将输入检查为整数。唯一的检查是确保
varchar
的宽度小于等于10。从中,整数可以具有以下范围:

-2147483648 to 2147483647
当您尝试将值
9876543210
插入
st_phno
列时,MySQL首先必须运行有效性检查,确保插入的整数在范围内。此检查失败,因为它大于允许的最大值
2147483647

您得到的错误有点误导,因为您的insert甚至没有达到
varchar
的case,因为insert。该消息显示MySQL拒绝将完全有效的10个字符的字符串插入到宽度为10的列中。这不是错误消息的原因,您可以通过插入例如十位数字
2000000
来验证这一点

解决方法:

由于
st_phon
列是
varchar
,因此可以
在整数中插入一个字符串。因此,我希望以下查询能够顺利进行:

INSERT INTO Student (`st_phon`) VALUES ('9876543210');

这应该是可行的,因为不再需要将输入检查为整数。唯一的检查是确保
varchar
的宽度为10或更小,确实如此。

使用表元数据添加代码请将您的问题包括(1)有问题的表上的
SHOW CREATE table…
的结果,以及(2)正在尝试执行插入的相关Java代码。使用表元数据添加代码请将您的问题包括(1)问题表上的
SHOW CREATE table…
,以及(2)正在尝试执行插入的相关Java代码。如果回答了您的问题,请标记为correct,谢谢。如果回答了您的问题,请标记正确,谢谢。