RuntimeException при вызове SQLException.getMessage () (DB2) - PullRequest
0 голосов
/ 15 апреля 2019

Мы видим RunTimeException при вызове SQLException.getMessage() с DB2:

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() не должно выдаваться?

1 Ответ

3 голосов
/ 15 апреля 2019

Если для свойства драйвера JDBC Db2 retrieveMessagesFromServerOnGetMessage установлено значение true (значение не по умолчанию), драйвер попытается получить полное сообщение об ошибке с сервера, вызвав хранимые процедуры SYSIBM.SQLCAMESSAGE и SYSIBM.SQLCAMESSAGECCSID.

Обычно привилегия EXECUTE для этих процедур предоставляется PUBLIC, но ваш ID пользователя Q1D02E02, по-видимому, не имеет этой привилегии. Это может произойти, например, если база данных была создана как ограничительная, или если привилегия была явно отозвана с PUBLIC.

Для решения проблемы либо предоставьте необходимую привилегию, либо избегайте получения сообщений об ошибках с сервера базы данных.

...