Я хочу найти порт DB2 в windows, помогите пожалуйста. Немного информации:
На самом деле я пытаюсь подключиться к DB2, используя «jdbc: db2: //127.0.0.1: 50000 / TEST» в качестве URL-адреса подключения из Java, но я получаю сообщение об ошибке: «Exception java.net.ConnectException: Ошибка открытия сокета для сервер /127.0.0.1 на порте 50 000 с сообщением: Используется ссылка на соединение: connect. ERRORCODE = -4499, SQLSTATE = 08001 "
Я обнаружил, что БД запущена и работает, но не прослушивает порт 50000, хотя упоминается в файле служб. Итак, db2 прослушивает какой-то другой порт, но,
Заранее большое спасибо.
Сначала убедитесь, что TCP comms включен,
db2cmd -i -w
db2set DB2COMM=npipe,tcpip
db2stop
db2start
Вы можете проверить, не использует ли он порт по умолчанию,
db2cmd -i -w
db2 get dbm cfg | find "SVCENAME"
Должна получиться такая строка,
TCP/IP Service name (SVCENAME) = db2c_DB2
В приведенном выше примере должен быть номер порта, если он не был установлен на порт по умолчанию, как вы можете видеть, моя конфигурация по умолчанию (= 50000)
Кажется, что если параметр DBM имени службы пуст, это означает, что TCP-соединения невозможны. Это не проблема, если вы собираетесь использовать DB2 локально, обращаясь к базе данных с того же компьютера.
Чтобы настроить TCP-соединения, вы должны выполнить шаги, описанные в других ответах. Однако наличие экземпляра без имени службы не указывает на проблему.
На этой странице обсуждается проблема: http://groups.google.com/group/comp.databases.ibm-db2/browse_thread/thread/a515365a5d04af81
Поскольку JDBC использует TCP-соединение, вам действительно нужно изменить конфигурацию вашего экземпляра, чтобы подключиться к базе данных.
Перво-наперво, установка показала ошибку в конце. Я не помню ошибку, но мне не удалось запустить db2. Итак, погуглил и нашел простое решение, и оно сработало. Я мог запускать и выполнять операции с базами данных, как это видно в OP. Но поиск номера порта все еще продолжался. После дальнейшего поиска в Google я обнаружил, что значение "SVCENAME" пустое, затем обновил параметр и ввел номер порта в файл служб. Даже тогда это не помогло. В крайнем случае просто переустановите DB2, и все заработало. Просто примечание: успешная установка будет иметь значение "SVCENAME" в конфигурации, и db2 сделает запись в файле служб для имени службы и порта.
Вы не можете сделать это с Java. Вам нужно это узнать из dbadmin или самой конфигурации DB / 2. Ваш пункт (3) на самом деле ничего не дал: файл 'services' является только ориентировочным или предназначен для использования некоторыми клиентами; он не говорит DB / 2, что делать. Это делает только собственная конфигурация DB / 2.
Поскольку вы можете запускать DB2 и подключаться к локальной базе данных из Центра управления (через драйвер CLI с использованием разделяемой памяти), одна или несколько из следующих проблем могут препятствовать соединениям JDBC, которые обмениваются данными через TCP / IP.
Изменения в реестре DB2 (через DB2SET) или в конфигурации DBM требуют остановки и запуска DB2, прежде чем они вступят в силу.