首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >MySQL (MariaDB) [WinError 10053]已建立的连接已被主机中的软件中止

MySQL (MariaDB) [WinError 10053]已建立的连接已被主机中的软件中止
EN

Stack Overflow用户
提问于 2021-09-17 22:36:12
回答 2查看 81关注 0票数 0

所以,我正在为mysql而苦苦挣扎我试着使用mysql.connector,但当我通过sshtunnel连接时,它并不愿意合作,所以我转而使用pymysql,这是我能写的最基本的代码:

代码语言:javascript
运行
复制
import pymysql
from sshtunnel import SSHTunnelForwarder

with SSHTunnelForwarder(('192.168.0.x', 22), ssh_username='pi', ssh_password='*********', remote_bind_address=('localhost', 3306)) as tunnel:
    tunnel.start()
    mydb = pymysql.connect(host="localhost",
                                   user='Mashu',
                                   passwd='******',
                                   port=tunnel.local_bind_port,
                                   db='Special_Channels')

print(mydb)
query = "SELECT * FROM Daily"
cur = mydb.cursor()
data = cur.execute(query)
print(data)

虽然在cur = mydb.cursor()上,它会引发一个错误:

代码语言:javascript
运行
复制
ConnectionAbortedError: [WinError 10053] An established connection was aborted by the software in your host machine

同样在更高的层次上,它是:

代码语言:javascript
运行
复制
pymysql.err.OperationalError: (2013, 'Lost connection to MySQL server during query ([WinError 10053] An established connection was aborted by the software in your host machine)')

我确信数据库和表是存在的,并且这个mysql帐户是可以访问的,因为我已经在其他软件中打开它并对其进行了更改(如果有人想知道的话是DataGrip)。

EN

回答 2

Stack Overflow用户

发布于 2021-09-17 23:25:14

我建议你用mariadb代替pymysql。

代码语言:javascript
运行
复制
pip install mariadb
票数 0
EN

Stack Overflow用户

发布于 2021-09-18 09:31:25

解决方案非常简单。它应该都在with语句内部,因为隧道连接(因此数据库访问)是在语句外部关闭的,所以它应该看起来像这样:

代码语言:javascript
运行
复制
import pymysql
from sshtunnel import SSHTunnelForwarder

with SSHTunnelForwarder(('192.168.0.x', 22), ssh_username='pi', ssh_password='*********', remote_bind_address=('localhost', 3306)) as tunnel:
    tunnel.start()
    mydb = pymysql.connect(host="localhost",
                                   user='Mashu',
                                   passwd='******',
                                   port=tunnel.local_bind_port,
                                   db='Special_Channels')

    print(mydb)
    query = "SELECT * FROM Daily"
    cur = mydb.cursor()
    data = cur.execute(query)
    print(data)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69230126

复制
相关文章

相似问题

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