whysocute
@whysocute
Just a boy from Belarus ????????

Uniqueviolation: duplicate key value violates unique constraint?

Ошибка:
2022-07-31T19:52:52.424633+00:00 app[web.1]: duplicate key value violates unique constraint "memcfc_pkey"
2022-07-31T19:52:52.424661+00:00 app[web.1]: DETAIL:  Key (name)=( ? ) already exists.

Сам код:
cur.execute (
     """CREATE TABLE IF NOT EXISTS memcfc(
        photo TEXT  NOT NULL,
        name varchar (100) PRIMARY KEY,
        discription TEXT  NOT NULL);"""
     )
    base.cursor()

async def add_sql_command(state):
    #try:
        async with state.proxy() as data:
            cur.execute(
        """INSERT INTO memcfc (photo , name , discription) VALUES
        (' ? ',' ? ',' ? '); """ , tuple(data.values()))

Сами данные добавляются(должны)в бд отсюда:
async def cm_memories_show(message:types.Message):
    if message.from_user.id == ID:
        await FSMAdmin.photo.set()
        await message.reply ('Загрузи фото')

async def otmena_command(message:types.Message , state: FSMContext):
    if message.from_user.id == ID:
        current_state = await state.get_state()
        if current_state is None:
            return
        await state.finish()
        await message.reply ('Окей')


#@dp.message_handler (content_types=['photo'],State=FSMAdmin.photo)
async def up_photo(message:types.Message , state: FSMContext):
    if message.from_user.id == ID:
        async with state.proxy() as data:
            data ['photo'] = message.photo[0].file_id
        await FSMAdmin.next()
        await message.reply ('Название фото:')

#@dp.message_handler(state=FSMAdmin.name)
async def cm_name(message:types.Message , state:FSMContext):
    if message.from_user.id == ID:
        async with state.proxy() as data:
            data['names']=message.text
        await FSMAdmin.next()
        await message.reply ('Описание:')


#@dp.message_hendler ( state=FSMAdmin.discruption)
async def cm_discription (message:types.Message , state: FSMContext):
    if message.from_user.id == ID:
        async with state.proxy() as data:
            data ['discription']=message.text
        await bot.send_message(message.from_user.id , 'Событие указано!')

        await add_sql_command(state)
        await state.finish()

Описание:
Сколько бы я не добавлял "События" , вылазит эта ошибка , в пг админ всего одна строка во всех столбцах, как я понимаю просто одно событие заменяет другое
  • Вопрос задан
  • 104 просмотра
Пригласить эксперта
Ответы на вопрос 1
Vindicar
@Vindicar
RTFM!
Криво написан SQL.
INSERT INTO memcfc (photo , name , discription) VALUES
        (' ? ',' ? ',' ? ');

Ты передаёшь в качестве значений строки " ? ". Именно строку "пробел вопросительный знак пробел". Это НЕ плейсхолдер для подстановки параметра, подставляемые параметры в этом запросе игнорируются.
Я так подозреваю, ты имел ввиду
INSERT INTO memcfc (photo , name , discription) VALUES (?, ?, ?);

(И да, правильно пишется dEscription)
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы