Возникают ситуации, когда при работе приложения в логах сервера приложений можно обнаружить вот такой эррор:
SQL0805N Package "NULLID.SYSLH214 0X5359534C564C3031" was not found. SQLSTATE=51002.
Для решения данной проблемы можно проделать следующее:
1. Убедимся, что пакета NULLID.SYSLH214 действительно нет в системе:
select *
from syscat.packages
where pkgname like 'SYS%'
order by 2
На рисунке видно, что за пакетом SYSLH213 идет SYSLH300.
2. По рекомендации IBM нужно в файле db2cli.ini прописать строчку CLIPkg=30 (регистр символов учитывается)
Далее, выполнить команду (присоединившись предварительно к серверу):
db2 “bind BNDDIR/@db2cli.lst blocking all sqlerror continue grant public CLIPKG 30”
3. После этого можно выполнить снова запрос
select *
from syscat.packages
where pkgname like 'SYS%'
order by 2
Убедимся, что требумый пакет присутствует в системе.
Возможна ситуация, что пакет может и не появится в базе, но в результате пересвязки пакетов все будет работать должным образом.
Если приложение находится в стадии отладки или тестирования, и падает с подобной ошибкой, то предпочтительным будет, чтобы разработчик проверил код в программе.
PS
В справочной документации DB2 по устранению данной ситуации рекомендуется выполнять следующие команды в CLP:
db2 “bind @db2ubind.lst blocking all grunt public” - для утилит DB2
db2 “bind @db2cli.lst blicking all grunt public” - для CLI