【问题标题】:Receiving ORA-01017 error (invalid username/password) when using cx_Oracle in Python在 Python 中使用 cx_Oracle 时收到 ORA-01017 错误(用户名/密码无效)
【发布时间】:2017-10-27 16:07:44
【问题描述】:

我正在尝试使用 python 和 oracle_Cx 库建立与 oracle 12c 数据库的连接,但遇到了一些困难。当我使用 PL/SQL 开发人员(我的普通用户帐户和使用 dblink 连接的第二个帐户)时,我能够使用两个不同的用户名和密码成功连接到数据库 - 虽然老实说我不知道​​这意味着什么,这正是我被告知的)。当我尝试使用 python 和 oracle_Cx 库连接到数据库时,我可以使用我的普通用户帐户毫无困难地进行连接,但是当我尝试使用 dblink 连接时,我得到了 ORA-01017 错误。我 100% 确定我在这两种情况下输入的密码相同,因为我在文本编辑器中输入用户名和密码,然后将其复制并粘贴到 PL/SQL 和我传递给 oracle_Cx.connect 的变量中函数,例如

oracle_ip = ourIpAddres
oracle_port = ourPort
oracle_SID = ourSID
oracle_username = standardUsername
oracle_password = standardPassword
oracle_selfserve_username = selfServeUsernane
oracle_selfserve_password = selfServePassword

我在其他一些 stackoverflow 帖子中读到,由于服务器和客户端区分大小写的差异,可能会出现无效的用户名/密码错误,这可以通过引用密码来解决,我也尝试过使用

oracle_selfserve_password = '\"imagineThisIsMyPassword\"'

但这也无济于事。

有人对我有什么建议吗?

谢谢 布拉德

【问题讨论】:

    标签: python oracle oracle12c


    【解决方案1】:

    我想出了一个用于建立连接的解决方案。如果您构造实际的连接字符串,而不是传递 cx_Oracle.connect 单个变量名称,它会起作用,例如

    db_selfserve2 = cx_Oracle.connect('notMyRealUserName/notMyPassword@123.456.121.222:123456/serviceName')
    

    您可以通过使用能够成功连接的客户端登录数据库并发出以下命令来找到服务名称

    select sys_context('userenv','service_name') from dual;
    

    【讨论】:

    • 太棒了。我尝试了很多解决方案,只有这个有效。我建议先尝试不使用 service_name。它对我有用,所以我什至不必让服务器人员为我找到它。
    猜你喜欢
    • 2018-10-13
    • 2012-01-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-04-29
    • 2020-09-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多