Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/277.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python mysql.connector问题,系统错误:32断管_Python_Discord.py - Fatal编程技术网

Python mysql.connector问题,系统错误:32断管

Python mysql.connector问题,系统错误:32断管,python,discord.py,Python,Discord.py,我正在使用library discord.py,我对mysql.connector有问题。 我使用mariadb数据库作为服务器前缀,但当我的bot全天候运行时,它开始抛出这些错误 0 | PyBot |文件“/home/pi/.local/lib/python3.7/site packages/discord/utils.py”,第329行,在协同程序中 0 | PyBot | value=f(*args,**kwargs) 0 | PyBot |文件“/home/pi/PyBotV2/bot

我正在使用library discord.py,我对mysql.connector有问题。 我使用mariadb数据库作为服务器前缀,但当我的bot全天候运行时,它开始抛出这些错误

0 | PyBot |文件“/home/pi/.local/lib/python3.7/site packages/discord/utils.py”,第329行,在协同程序中
0 | PyBot | value=f(*args,**kwargs)
0 | PyBot |文件“/home/pi/PyBotV2/bot/main.py”,第11行,在get_前缀中
0 | PyBot |返回fetch_前缀(message.guild.id)
0 | PyBot |文件“/home/pi/PyBotV2/bot/cogs/database.py”,第15行,在fetch_前缀中
0 | PyBot | cursor.execute(前缀_query,(gid,))
0 | PyBot | File“/home/pi/.local/lib/python3.7/site packages/mysql/connector/cursor.py”,执行中的第551行
0 | PyBot | self.| handle|u result(self._connection.cmd|u query(stmt))
0 | PyBot | File“/home/pi/.local/lib/python3.7/site packages/mysql/connector/connection.py”,cmd_查询中第490行
0 | PyBot | result=self._handle_result(self._send_cmd(ServerCmd.QUERY,QUERY))
0 | PyBot | File“/home/pi/.local/lib/python3.7/site packages/mysql/connector/connection.py”,第261行,在_send_cmd中
0 | PyBot |数据包_编号,压缩_数据包_编号)
0 | PyBot | File“/home/pi/.local/lib/python3.7/site packages/mysql/connector/network.py”,第143行,在发送平面中
0 | PyBot | errno=2055,value=(self.get_address(),_strioerror(err)))
0 | PyBot | mysql.connector.errors.OperationalError:2055:在“localhost:3306”处与mysql服务器失去连接,系统错误:32断开管道
我的DB连接代码:

导入mysql.connector
mydb=mysql.connector.connect(
host=“localhost”,
user=“USERNAME”,
password=“password”,
database=“discord\u bot”
)
cursor=mydb.cursor()
def fetch_前缀(gid):
prefix\u query=“从id=%s的服务器中选择前缀”
cursor.execute(前缀_查询,(gid,))
prefix=cursor.fetchone()
返回前缀[0]
def add_前缀(gid,prefix=“.”):
prefix\u query=“插入到服务器(id,前缀)值(%s,%s)”
cursor.execute(prefix_query,(gid,prefix,))
mydb.commit()
def删除前缀(gid):
prefix\u query=“从id=%s的服务器中删除”
cursor.execute(前缀_查询,(gid,))
mydb.commit()
def update_前缀(gid,前缀):
prefix\u query=“更新服务器设置前缀=%s,其中id=%s”
execute(prefix\u查询,(prefix,gid,))
旧的连接最终将在服务器端超时,并变得不可用

无论何时与数据库交互,请尝试连接到服务器。或者创建一个计时器,每隔一段时间重新加载一次连接

也许是这样的:

导入mysql.connector
def connect():
mydb=mysql.connector.connect(
host=“localhost”,
user=“USERNAME”,
password=“password”,
database=“discord\u bot”
)
返回mydb.cursor()
def数据库_交互(数据):
数据库=连接()
执行(“SQL脚本”,(数据,))
result=database.fetchone()
database.close()
返回结果[0]
旧的连接最终将在服务器端超时,并变得不可用

无论何时与数据库交互,请尝试连接到服务器。或者创建一个计时器,每隔一段时间重新加载一次连接

也许是这样的:

导入mysql.connector
def connect():
mydb=mysql.connector.connect(
host=“localhost”,
user=“USERNAME”,
password=“password”,
database=“discord\u bot”
)
返回mydb.cursor()
def数据库_交互(数据):
数据库=连接()
执行(“SQL脚本”,(数据,))
result=database.fetchone()
database.close()
返回结果[0]

使用sqlite3的不同解决方案

导入sqlite3 path=“discord\u bot.db” conn=sqlite3.connect(路径) 游标=连接游标() def数据库_交互(数据): execute(“SQL脚本”,(数据,)) 结果=cursor.fetchone() 返回结果[0]
使用sqlite3的不同解决方案

导入sqlite3 path=“discord\u bot.db” conn=sqlite3.connect(路径) 游标=连接游标() def数据库_交互(数据): execute(“SQL脚本”,(数据,)) 结果=cursor.fetchone() 返回结果[0]
例如,它不应该是
database().execute(“SQL脚本”),(数据,)
而不是
connect().execute(“SQL脚本”),(数据,)
?。在数据库中删除或插入某些内容后,
database().commit()
会起作用吗?是的,你说得对,我更改了函数名,但忘了更新它。至于通过删除或插入进行提交,只要您的帐户具有权限,它就应该可以正常工作。因此,我不知道您使用数据库的确切目的,但您可以创建并使用本地数据库并使其脱机,然后连接到该数据库时就会出现问题,它也将是quickerBy离线数据库你是说sqlite或类似的东西吗?那不起作用,但是!我带来了另一个解决方案。从函数数据库中,我只返回对象,并在函数中分别创建游标。例如,它不应该是
database().execute(“SQL脚本”),(数据),
而不是
connect().execute(“SQL脚本”),(数据),)
?。在数据库中删除或插入某些内容后,
database().commit()
会起作用吗?是的,你说得对,我更改了函数名,但忘了更新它。至于通过删除或插入进行提交,只要您的帐户具有权限,它就应该可以正常工作。因此,我不知道您使用数据库的确切目的,但您可以创建并使用本地数据库并使其脱机,然后连接到该数据库时就会出现问题,它也将是quickerBy离线数据库你是说sqlite或类似的东西吗?那不起作用,但是!我带来了另一个解决方案。从函数数据库中,我只返回对象,并在函数中分别创建游标声音