【发布时间】:2023-03-09 08:18:01
【问题描述】:
我正在尝试改进 Java/Postgres 应用程序中的错误处理,并且经常发生的错误是输入对于具有固定长度的列来说太长了。发生这种情况时我回滚事务,但在回滚完成之前,我试图找到一种方法来确定哪一列违反了长度限制,以使调试此错误更容易和更有效。
我的做法是:
- 查询
informationschema.columns获取错误信息中显示长度的所有列名 - 查询步骤 1 中返回的每一列以检查长度限制
但是,当我尝试查询信息架构时,我得到了这个错误:
ERROR: current transaction is aborted, commands ignored until end of transaction block
有没有办法在这个事务上仍然运行来自 java 的查询,或者有没有更好的方法来检索违反其长度限制的列?
【问题讨论】:
-
为什么不反过来呢? db 上的列长度不能改变吗?只需在查询第一次运行时缓存数据库架构中的列长度,然后,当事务因此失败时,只需将输入字段的长度与您之前检索的值进行比较。
标签: java postgresql jdbc transactions hibernateexception