I'm using library discord.py and i have issue with mysql.connector.
I use mariadb database for server prefixes but when my bot runs 24/7, it starts throwing these errors
0|PyBot | File "/home/pi/.local/lib/python3.7/site-packages/discord/utils.py", line 329, in maybe_coroutine
0|PyBot | value = f(*args, **kwargs)
0|PyBot | File "/home/pi/PyBotV2/bot/main.py", line 11, in get_prefix
0|PyBot | return fetch_prefix(message.guild.id)
0|PyBot | File "/home/pi/PyBotV2/bot/cogs/database.py", line 15, in fetch_prefix
0|PyBot | cursor.execute(prefix_query, (gid,))
0|PyBot | File "/home/pi/.local/lib/python3.7/site-packages/mysql/connector/cursor.py", line 551, in execute
0|PyBot | self._handle_result(self._connection.cmd_query(stmt))
0|PyBot | File "/home/pi/.local/lib/python3.7/site-packages/mysql/connector/connection.py", line 490, in cmd_query
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", line 261, in _send_cmd
0|PyBot | packet_number, compressed_packet_number)
0|PyBot | File "/home/pi/.local/lib/python3.7/site-packages/mysql/connector/network.py", line 143, in send_plain
0|PyBot | errno=2055, values=(self.get_address(), _strioerror(err)))
0|PyBot | mysql.connector.errors.OperationalError: 2055: Lost connection to MySQL server at 'localhost:3306', system error: 32 Broken pipe
My code for DB connection:
import mysql.connector
mydb = mysql.connector.connect(
host="localhost",
user="USERNAME",
password="PASSWORD",
database="discord_bot"
)
cursor = mydb.cursor()
def fetch_prefix(gid):
prefix_query = "SELECT prefix FROM servers WHERE id = %s"
cursor.execute(prefix_query, (gid,))
prefix = cursor.fetchone()
return prefix[0]
def add_prefix(gid, prefix = "."):
prefix_query = "INSERT INTO servers(id, prefix) VALUES (%s, %s)"
cursor.execute(prefix_query, (gid, prefix,))
mydb.commit()
def remove_prefix(gid):
prefix_query = "DELETE FROM servers WHERE id = %s"
cursor.execute(prefix_query, (gid,))
mydb.commit()
def update_prefix(gid, prefix):
prefix_query = "UPDATE servers SET prefix = %s WHERE id = %s"
cursor.execute(prefix_query, (prefix, gid, ))
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…