我正在尝试改进 Java/Postgres 应用程序中的错误处理,并且经常发生的错误是输入对于具有固定长度的列来说太长了。发生这种情况时我回滚事务,但在回滚完成之前,我试图找到一种方法来确定哪一列违反了长度限制,以使调试此错误更容易和更有效。
我的方法是:
- 查询
informationschema.columns
获取报错信息中显示长度的所有列名 - 查询步骤 1 中返回的每一列以检查长度约束
但是,当我尝试查询信息架构时,我收到此错误:
ERROR: current transaction is aborted, commands ignored until end of transaction block
有没有办法在这个事务上仍然运行来自 java 的查询,或者有没有更好的方法来检索违反其长度限制的列?