SQL1024N при использовании DB2 в Cygwin

#db2 #cygwin

Вопрос:

У меня есть DB2 версии 11.1.0.1527 в Windows 10 и Cygwin версии 3.2.0(0.340/5/3)

Я пытаюсь использовать DB2 из Cygwin, но он не удерживает соединение db2 после успешного подключения.

У кого-нибудь есть какие-нибудь предложения?

Как размножаться:

(1) Запустите окно Windows cmd от имени администратора

(2) Запустите «Окно командной строки DB2 — Администратор». :

«C:Program ФайлыIBMSQLLIBBINdb2cwadmin.bat»

(3) Запустите Cygwin в окне команд DB2 :

C:cygwin64binmintty.exe -i /Cygwin-Терминал.ico —

(4) Подключение к базе данных вручную(успешно) :

GMX I10030754@DESKTOP-I1IQG9H ~

$ db2 подключитесь к DB3270GA пользователю db2admin с помощью пароля

Информация о подключении к базе данных

Сервер базы данных = DB2/NT64 11.1.0

Идентификатор авторизации SQL = DB2ADMIN

Псевдоним локальной базы данных = DB3270GA

(5) Выполнение любого оператора sql возвращает SQL1024N

GMX I10030754@DESKTOP-I1IQG9H ~

$ db2 выберите * из myschema.application

SQL1024N Подключение к базе данных не существует. SQLSTATE=08003

Комментарии:

1. в вашем загрузочном файле bash (или в любой другой оболочке, которую вы используете) экспортируется переменная среды DB2CLP? Пример: export DB2CLP=**$$** ?

2. @mao Спасибо за это предложение. Когда я добавил этот экспорт, ему не удалось подключиться к DB2 на шаге(4) с помощью DB21018E. Я заменил эту инструкцию экспорта на «экспорт DB2CLP=DB20FADE», как рекомендовано в другом месте, и исходная проблема вернулась — ошибка на шаге (5) с помощью SQL1024N.

3. после экспорта переменной удалите все ранее существовавшие db2bp.exe начал с cygwin. Убедитесь, что вы вышли из bash и перезапустили его, затем повторите попытку. Это то db2bp.exe , что поддерживает соединение с базой данных, так что процесс должен продолжать существовать и иметь связь с db2.exe (clp) когда он запускается. Если db2.exe не удается связаться или идентифицировать db2bp.exe фоновая задача вы получаете SQL1024N, я полагаю.

4. @мао, похоже, в этом и проблема. Я вижу, как db2dp.exe процесс запускается в диспетчере задач, когда я выполняю команду DB2 connect. Однако через несколько секунд он исчезает. Теперь вопрос в следующем : как мы можем сохранить эту фоновую задачу(db2dp.exe) жив?

5. Делает тот же симптом, если вы используете ksh (pdksh) вместо bash в качестве оболочки (все равно нужно экспортировать переменную DB2CLP в .profile или .kshrc для оболочки). ?

Ответ №1:

Попробуйте выполнить следующее в сеансе cygwin:

 export DB2CLP=**$**
# a connection will be closed after 5 seconds of inactivity otherwise
export DB2RQTIME=3600
db2 connect ...
sleep 10
db2 "select ..."
 

Комментарии:

1. @мао и Марк, большое вам обоим спасибо за то, что потратили на это время. Я пробовал различные варианты экспорта, как предлагалось(и другие), но проблема остается той же. Из-за нехватки времени я вынужден отказаться от этого подхода Cygwin.