Код: Выделить всё
OS: Fedora 40
Kernel: 6.10.6-200
Installed DB2 client: v11.5.9_linuxx64_client.tar.gz
python 3.12.5
ibm_db 3.2.3
Код: Выделить всё
$DB2INSTANCE db2inst1
$DB2_HOME /home/db2inst1/sqllib
$IBM_DB_HOME /home/db2inst1/sqllib
$LD_LIBRARY_PATH /home/db2inst1/sqllib/lib64:/home/db2inst1/sqllib/lib64/gskit:/home/db2inst1/sqllib/lib32
Код: Выделить всё
db2 "catalog tcpip node remote server
remote_instance "
db2 "catalog database as at node authentication SERVER_ENCRYPT"
Вот и часть Python
Я следовал инструкциям https://www.ibm.com/docs/en/db2/11.1?to ... ase-server
Код: Выделить всё
import ibm_db
conn = ibm_db.connect("DATABASE=;HOSTNAME=;PORT=;PROTOCOL=TCPIP;UID=;PWD=", "", "")
Код: Выделить всё
import ibm_db
conn = ibm_db.connect("", "", "")
Код: Выделить всё
Exception: [IBM][CLI Driver] SQL1531N The connection failed because the name specified with the DSN connection string keyword could not be found in either the db2dsdriver.cfg configuration file or the db2cli.ini configuration file. Data source name specified in the connection string: "". SQLCODE=-1531
(Я уже удалил ibm_db и переустановил его)
Дополнение 1
Спасибо @mao
Нет хотите создать и изменить db2dsdriver.cfg вручную, поскольку другие приложения используют каталогизированные соединения db2. Поэтому редактировать информацию о соединении дважды нецелесообразно.
Но можно создать файл db2dsdriver.cfg с помощью команды db2dsdcfgfill.
Чтобы сгенерировать файл db2dsdriver.cfg, я выполнил следующие инструкции:
https://www.ibm.com/docs/en/db2/11.5?topic=file-data -server-driver-configuration-location
https://www.ibm.com/docs/en/db2/11.5?to ... figuration
https://www.ibm .com/docs/en/db2/11.5?topic=dsdcf-copying-existing-database-directory-information-into-db2dsdriver-файл-конфигурации
Код: Выделить всё
db2dsdcfgfill -i db2inst1 -o /home/db2inst1/sqllib/cfg
SQL0000W Die Anweisung konnte fehlerfrei verarbeitet werden.
Я просмотрел три файла db2dsdriver.xml, но не нашел своих каталогизированных соединений.
Код: Выделить всё
find / -type f -name "db2dsdriver*" 2>/dev/null
/home//.local/lib/python3.12/site-packages/clidriver/cfg/db2dsdriver.cfg.sample
/home//.local/lib/python3.12/site-packages/clidriver/cfg/db2dsdriver.xsd
/home//git/
/.venv/lib/python3.12/site-packages/clidriver/cfg/db2dsdriver.cfg.sample
/home//git//.venv/lib/python3.12/site-packages/clidriver/cfg/db2dsdriver.xsd
/opt/ibm/db2/V11.5/cfg/db2dsdriver.cfg.sample
/opt/ibm/db2/V11.5/cfg/db2dsdriver.xsd
Дополнение 2Я выполнил команду от пользователя db2inst1 и файл был создан
Код: Выделить всё
db2inst1@:~$ db2dsdcfgfill -i db2inst1
SQL1535I Das Dienstprogramm db2dsdcfgfill hat die Konfigurationsdatei db2dsdriver.cfg erfolgreich erstellt.
Затем я изменил группу и разрешения в файле, чтобы я мог использовать команду db2dsdcfgfill со своим пользователем.
После этого мне пришлось создать символическую ссылку
Код: Выделить всё
ln -s /home/db2inst1/sqllib/cfg/db2dsdriver.cfg /home//git/
/.venv/lib/python3.12/site-packages/clidriver/cfg/db2dsdriver.cfg
Код: Выделить всё
import ibm_db
conn = ibm_db.connect("", "", "
")
Подробнее здесь: https://stackoverflow.com/questions/790 ... ase-ibm-db