python-oracledb中的“nodename nor servname provided,or not known”是什么意思?

3ks5zfa0  于 2023-08-03  发布在  Oracle
关注(0)|答案(1)|浏览(371)

例如,使用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


这是什么意思?

e5nqia27

e5nqia271#

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

cs = "validhost.oracle.com/orclpdb1"

字符串
或者你可以用途:

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


同样的错误和解决方案也适用于连接池创建。
确保可以从运行Python的机器访问数据库主机。

相关问题