我有一个用 java 编写的 servlet/tomcat 服务器。
我有一个我编写的 mysql 类,我一直在使用其中的函数将准备好的语句插入到使用 jdbc 的 mysql 数据库中。
我调用的函数java.sql.PreparedStatement.setString
用于设置准备好的语句的参数。这已经连续几个月完美地适用于数千种不同的输入,没有问题。
然而,最近,当尝试使用该函数将 ip 地址插入 VARCHAR 类型的 mysql 列时,我收到如下异常抛出:
com.mysql.jdbc.MysqlDataTruncation: Data truncation: Truncated incorrect DOUBLE value: '10.1.1.101'
这很奇怪,在我的代码中任何地方都没有 DOUBLE 的概念,mysql 表上的“显示列”确保数据类型实际上是 VARCHAR。我让我的同事也查看了这个,以仔细检查我没有遗漏一些简单的东西。然而我们都被难住了。
我唯一的理论是 JDBC 驱动程序或 SetText 函数冒昧并假设 DOUBLE 数据类型,因为 IP 地址的第一部分采用 XX.XX 的形式
任何帮助都会很棒,请不要告诉我做明显的事情,比如检查我的列数据类型等。我花了很多时间检查所有内容。