#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.