我有一个带有 Debian Jessie 和 Postgresql 9.4 的专用数据库服务器
客户端:A 是一个 Tomcat Java 应用程序,它使用扭矩与连接到数据库服务器的 JDBC 驱动程序。
问题:在使用新值更新行时,更新失败,因为应用程序传输了错误的数据类型。
错误信息:
列“device_macaddr”的类型是 macaddr,但表达式的类型是在字符 159 处变化的字符
Torque 生成的更新语句:
UPDATE device SET device_last_change = $1, device_macaddr = $2 WHERE device_ID = $3
Run Code Online (Sandbox Code Playgroud)
postgresql 中数据类型的定义:
last_change is timestamp (0) without time zone NOT NULL
device_macaddr is macaddr NOT NULL
device_id is bigint NOT NULL
Run Code Online (Sandbox Code Playgroud)
我们最近确实将 DB 和 jdbc 驱动程序从 8.4 更新到 9.4
我能够查明对 jdbc 驱动程序的更改,但无法找到准确显示此行为更改的更改日志。
从那以后,上面的语句似乎不再起作用,而尽管当时可能是错误的数据类型,但它以前仍然起作用。
有没有办法“减轻”来自 Postgres 9.4 DB Server 的针对特定情况的严格检测?
我确实阅读了 jdbc 驱动程序的增强以包含那些额外的数据类型,但是这对我来说还没有用,所以我尝试在我拥有的选项的另一端找到解决方法。