调用 SQLException.getMessage() 时出现 RuntimeException (DB2)
RuntimeException when calling SQLException.getMessage() (DB2)
我们在使用 DB2 调用 SQLException.getMessage()
时看到 RunTimeException
:
Caused by: com.ibm.db2.jcc.am.ro: Q1D02E02;EXECUTE;SYSIBM.SQLCAMESSAGECCSID
at com.ibm.db2.jcc.am.ed.a(ed.java:676)
at com.ibm.db2.jcc.am.ed.a(ed.java:60)
at com.ibm.db2.jcc.am.ed.a(ed.java:127)
at com.ibm.db2.jcc.am.p.e(p.java:512)
at com.ibm.db2.jcc.am.p.a(p.java:467)
at com.ibm.db2.jcc.am.sn.a(sn.java:334)
at com.ibm.db2.jcc.am.qm.c(qm.java:78)
at com.ibm.db2.jcc.am.ro.getMessage(ro.java:52)
这可能是我的配置问题,但 getMessage()
肯定不应该抛出?
如果 Db2 JDBC 驱动程序 属性 retrieveMessagesFromServerOnGetMessage
设置为 true
(非默认值),驱动程序将尝试从中检索完整的错误消息服务器通过调用存储过程 SYSIBM.SQLCAMESSAGE
和 SYSIBM.SQLCAMESSAGECCSID
.
通常这些程序的 EXECUTE
权限会授予 PUBLIC
,但您的用户 ID Q1D02E02 似乎没有该权限。例如,如果数据库被创建为限制性的,或者如果从 PUBLIC
明确撤销权限,则可能会发生这种情况。
要解决此问题,请授予必要的权限或避免从数据库服务器检索错误消息。
我们在使用 DB2 调用 SQLException.getMessage()
时看到 RunTimeException
:
Caused by: com.ibm.db2.jcc.am.ro: Q1D02E02;EXECUTE;SYSIBM.SQLCAMESSAGECCSID
at com.ibm.db2.jcc.am.ed.a(ed.java:676)
at com.ibm.db2.jcc.am.ed.a(ed.java:60)
at com.ibm.db2.jcc.am.ed.a(ed.java:127)
at com.ibm.db2.jcc.am.p.e(p.java:512)
at com.ibm.db2.jcc.am.p.a(p.java:467)
at com.ibm.db2.jcc.am.sn.a(sn.java:334)
at com.ibm.db2.jcc.am.qm.c(qm.java:78)
at com.ibm.db2.jcc.am.ro.getMessage(ro.java:52)
这可能是我的配置问题,但 getMessage()
肯定不应该抛出?
如果 Db2 JDBC 驱动程序 属性 retrieveMessagesFromServerOnGetMessage
设置为 true
(非默认值),驱动程序将尝试从中检索完整的错误消息服务器通过调用存储过程 SYSIBM.SQLCAMESSAGE
和 SYSIBM.SQLCAMESSAGECCSID
.
通常这些程序的 EXECUTE
权限会授予 PUBLIC
,但您的用户 ID Q1D02E02 似乎没有该权限。例如,如果数据库被创建为限制性的,或者如果从 PUBLIC
明确撤销权限,则可能会发生这种情况。
要解决此问题,请授予必要的权限或避免从数据库服务器检索错误消息。