'nodename nor servname provided, or not known' python-oracledb意味着什么?



例如,使用Python 3.9.6连接或创建连接池python-oracledb默认的"Thin"模式:

import oracledb
import os
un = os.environ.get("PYTHON_USERNAME")
pw = os.environ.get("PYTHON_PASSWORD")
cs = "doesnotexist.oracle.com/orclpdb1"
c = oracledb.connect(user=un, password=pw, dsn=cs)

在macOS上给出这个错误:

socket.gaierror: [Errno 8] nodename nor servname provided, or not known

在Linux上错误略有不同:

socket.gaierror: [Errno -2] Name or service not known

这是什么意思?

表示无法访问给定的主机名(或IP地址)。

解决方案是找到数据库所在的正确主机名(或IP地址)所在地。检查您使用的连接字符串中的拼写错误。传递有效的创建连接时的主机名,例如:

cs = "validhost.oracle.com/orclpdb1"

或者你可以使用:

connection = oracledb.connect(user=u, password=p,
host="validhost.oracle.com", service_name="orclpdb1")

同样的错误和解决方法也适用于创建连接池。

确保从运行Python的机器可以访问数据库主机。

最新更新