Почему появляется ошибка Application Command raised an exception: InterfaceError: (0, '')?

Рейтинг: 0Ответов: 1Опубликовано: 31.03.2023

И так. Я создаю своего бота для магазина. Сейчас я делаю функцию для добавления человека в очередь, но что-то идёт не так и скрипт не работает (Если что токен я убрал что бы не палить его). Подскажите, в чём проблема (Я новичок в БД и не особо разбираюсь)

import pymysql.cursors
from config import host, user, password

import discord
from discord.ext import commands

intents = discord.Intents.default()
bot = commands.Bot(intents=intents, context=None)

line = discord.SlashCommandGroup("line", "Только для администрации")

test_server_id = 1078395339939266690
try:
    # Connecting to the database
    connection = pymysql.connect(
        host=host,
        port=3306,
        user=user,
        password=password
    )
    connection.cursor().execute('create database IF NOT EXISTS user_main_datatest')
    connection.select_db("user_main_datatest")
    print("Successfully connected to the database")
    print("#" * 20)

    try:
        # Connecting to the table

        with connection.cursor() as cursor:
            create_table_query = "CREATE TABLE IF NOT EXISTS `users_info_test` (line int AUTO_INCREMENT," \
                                 " id int, status varchar(32)," \
                                 " PRIMARY KEY (line))"
            cursor.execute(create_table_query)
            print("Connected to the table successfully")

        @bot.slash_command(guild_ids=[test_server_id], name="set_to_list", description="Поставить в очередь (Только для администрации)")
        async def add_to_line(ctx, id):
            with connection.cursor() as cursor:
               insert_query = f"INSERT INTO `users_info` (id, status) VALUES ('{id}', 'Is in the work')"
               cursor.execute(insert_query)
               connection.commit()

    finally:
        connection.close()
except Exception as ex:
    print("Connection refused")
    print(ex)

bot.run()

Вот текст ошибки:

Traceback (most recent call last):
  File "D:\BotForArts\venv\Lib\site-packages\discord\commands\core.py", line 124, in wrapped
    ret = await coro(arg)
          ^^^^^^^^^^^^^^^
  File "D:\BotForArts\venv\Lib\site-packages\discord\commands\core.py", line 982, in _invoke
    await self.callback(ctx, **kwargs)
  File "D:\BotForArts\test_attach.py", line 40, in add_to_line
    cursor.execute(insert_query)
  File "D:\BotForArts\venv\Lib\site-packages\pymysql\cursors.py", line 158, in execute
    result = self._query(query)
             ^^^^^^^^^^^^^^^^^^
  File "D:\BotForArts\venv\Lib\site-packages\pymysql\cursors.py", line 325, in _query
    conn.query(q)
  File "D:\BotForArts\venv\Lib\site-packages\pymysql\connections.py", line 548, in query
    self._execute_command(COMMAND.COM_QUERY, sql)
  File "D:\BotForArts\venv\Lib\site-packages\pymysql\connections.py", line 797, in _execute_command
    raise err.InterfaceError(0, "")
pymysql.err.InterfaceError: (0, '')

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "D:\BotForArts\venv\Lib\site-packages\discord\bot.py", line 1114, in invoke_application_command
    await ctx.command.invoke(ctx)
  File "D:\BotForArts\venv\Lib\site-packages\discord\commands\core.py", line 375, in invoke
    await injected(ctx)
  File "D:\BotForArts\venv\Lib\site-packages\discord\commands\core.py", line 132, in wrapped
    raise ApplicationCommandInvokeError(exc) from exc
discord.errors.ApplicationCommandInvokeError: Application Command raised an exception: InterfaceError: (0, '')

Ответы

▲ 0

Судя по ошибке она идет в момент cursor.execute(insert_query)

заменить users_info на users_info_test в строке insert_query = = f"INSERT INTO users_info (id, status) VALUES ('{id}', 'Is in the work')"

Можно попробовать такой запрос

insert_query = "INSERT INTO `users_info_test` (id, status) VALUES (%s, %s)"
cursor.execute(insert_query, (id, 'Is in the work'))