首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MySQL和Python (pyodbc):无法找到过程入口点OPENSSL_sk_new_reserve

问MySQL和Python (pyodbc):无法找到过程入口点OPENSSL_sk_new_reserve
EN

Stack Overflow用户
提问于 2020-07-21 13:05:29
回答 2查看 1.8K关注 0票数 1

我正在尝试从Windows 10连接远程(托管在dreamhost上) MySQL数据库。

我安装了32位MySQL ODBC驱动程序的最新版本(我正在运行32位python),并运行以下代码:

代码语言:javascript
复制
connection_string = (
    r'DRIVER=MySQL ODBC 8.0 ANSI Driver;'
    r'SERVER=https://mysql.mysite.com;'
    r'DATABASE=dbname;'
    r'UID=userid;'
    r'PWD=password;'
    r'charset=utf8mb4;'
    )

cnxn = pyodbc.connect(connection_string)
cursor = cnxn.cursor()

显然,使用正确的服务器、数据库名、userID和密码。

我可以使用这些信息和凭据从mysql工作台访问它,但是当我运行上面的代码时,我会得到以下消息:

代码语言:javascript
复制
The procedure entry point OPENSSL_sk_new_reserve could not be 
located in the dynamic link library c:\Program Files (x86)
MySQL\Connector ODBC 8.0\libssl-1_1.dll.

当我单击“确定”时,我会在控制台中得到以下消息:

代码语言:javascript
复制
Traceback (most recent call last):
  File "C:\Users\pasto\OneDrive\Documents\Python\work.py", line 129, in <module>
    print(get_mysql_data())
  File "C:\Users\pasto\OneDrive\Documents\Python\work.py", line 109, in get_mysql_data
    cnxn = pyodbc.connect(connection_string)
pyodbc.InterfaceError: ('IM003', '[IM003] Specified driver could not be loaded due to system error  127: The specified procedure could not be found. (MySQL ODBC 8.0 ANSI Driver, C:\\Program Files (x86)\\MySQL\\Connector ODBC 8.0\\myodbc8a.dll). (160) (SQLDriverConnect)')

我尝试过的其他事情:

Google我所发现的只是关于蟒蛇的东西,很明显,它也有这个问题。

重命名libssl_1-1.dll库,然后错误代码更改为

代码语言:javascript
复制
pyodbc.InterfaceError: ('IM003', '[IM003] Specified driver could not be loaded 
due to system error  126: The specified module could not be found. 
(MySQL ODBC 8.0 ANSI Driver, C:\\Program Files (x86)\\MySQL\\Connector ODBC 
8.0\\myodbc8a.dll). (160) (SQLDriverConnect)')

然后mysql-connector,尝试了安装(通过pip)

代码语言:javascript
复制
import mysql.connector
    
    mydb = mysql.connector.connect(
      host="https://mysql.mysite.com",
      user="username",
      password="password"
    )

但那只会让我

代码语言:javascript
复制
File "C:\Program Files (x86)\Python37-32\lib\site-packages\mysql\
connector\network.py", line 600, in open_connection
errno=2003, values=(self.get_address(), _strioerror(err)))
mysql.connector.errors.InterfaceError: 2003: Can't connect to MySQL 
server on 'https://mysql.fairplainpc.com:3306' (11001 getaddrinfo failed)

我已经做了几个小时了,我几乎放弃了,使用请求库来下载一个PHP页面,然后用我想要的数据进行解析,但是我真的更愿意这样做。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-07-21 16:45:35

我在mysql.com上发现了另一个有类似错误的错误报告。

他们的解决办法是安装MySQL ODBC驱动程序的早期版本。他们安装了5.3驱动程序(从7/21/20可以找到这里 -从下拉列表中选择它)。

我卸载了8,安装了5.3,并将驱动程序行更改为

代码语言:javascript
复制
r'DRIVER=MySQL ODBC 5.3 ANSI Driver;'

它立刻就起作用了。

票数 1
EN

Stack Overflow用户

发布于 2020-07-21 16:46:30

用您的数据尝试这个connection_string:

代码语言:javascript
复制
connection_string = (
'DRIVER={MySQL ODBC 3.51 Driver};'
'SERVER=https://mysql.mysite.com;'
'DATABASE=dbname;'
'USER=userid;'
'PASSWORD=password;'
)

如果不自己运行mysql服务器,则可能必须将ip地址分配给数据库用户,或者将ip添加到排除之外。

例如Hostpoint (瑞士):

​

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63015192

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档