连接到选定的数据库...
成功连接数据库...
将记录插入表格中...
com.mysql.jdbc.MysqlDataTruncation:数据截断:第1行的'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时,它会抛出异常。 帮助纠正程序
答案 0 :(得分:0)
从MySQL documentation开始,整数可以取以下范围:
-2147483648 to 2147483647
当您尝试将值9876543210
插入st_phno
列时,MySQL first 必须运行有效性检查,表明您插入的整数在范围内。它未通过此检查,因为它更大而不是2147483647
的最大允许值。
你得到的错误有点误导,因为插入永远不会像varchar
那样插入2000000000
。该消息使得MySQL拒绝将完全有效的10个字符串插入宽度为10的列中。这不是错误消息的原因,您可以通过插入例如十位数来自行验证号码st_phon
。
解决方法:强>
由于您的varchar
列为INSERT
,因此您可以INSERT INTO Student (`st_phon`) VALUES ('9876543210');
整数内的字符串。所以我希望以下查询成功而不会出错:
varchar
这应该有效,因为不再检查输入为整数。唯一的检查是确保{{1}}的宽度宽度为10或更小,这样做。