sqlite3.IntegrityError: Не удалось выполнить ограничение UNIQUE: ошибка, даже если введенные значения являются уникальными? - PullRequest
0 голосов
/ 09 мая 2019

У меня есть база данных, структурированная так.

CREATE TABLE "work_order" ( "id" INTEGER, "ServiceTitle" TEXT UNIQUE, 
"Link" TEXT UNIQUE, "Status" TEXT, PRIMARY KEY("id") );

Когда я пытаюсь ввести некоторые значения, я получаю сообщение об ошибке.

"sqlite3.IntegrityError: UNIQUE constraint failed: work_order.Link"

Затем программа завершается.

Process finished with exit code 1

Даже если значение, введенное мной в столбец «Ссылка», является уникальным.

 conn = sqlite3.connect('WO.db', timeout=10)
 c = conn.cursor()

 c.execute("insert into work_order (ServiceTitle, Link, Status) values 
 (?,?,?)", ('oo', 'll', 'rr'))

 conn.commit()
 conn.close()

Новая запись все еще вставляется в базу данных именно так, как я хотел. Я просто получаю эту ошибку на pycharm.

Я также попытался вставить идентификатор первичного ключа. Это не автоматическое увеличение, поэтому я могу ввести его вручную, если оно уникально.

conn = sqlite3.connect('WO.db', timeout=10)
c = conn.cursor()

 c.execute("insert into work_order (id, ServiceTitle, Link, Status) values 
(?,?,?,?)", (7, 'kkkk', 'eeeee', 'qqqqq'))

conn.commit()
conn.close()

Снова я получаю ошибку в pycharm, но в этот раз по-другому. Запись все еще вставляется в базу данных снова, хотя именно так, как я хотел. Затем процесс завершается снова.

sqlite3.IntegrityError: UNIQUE constraint failed: work_order.id

Process finished with exit code 1.

Есть ли какие-либо предложения относительно того, почему я получаю эту ошибку, даже если все значения, которые я ввожу в эти столбцы, являются уникальными значениями, которых нет в базе данных?

ОБНОВЛЕНИЕ *** Я создал новую таблицу и удалил уникальные ограничения. Теперь я не получаю ошибки, но записи в таблицу дважды. Вот в чем проблема, когда были уникальные ограничения. Я не знаю, почему там вставляются две записи.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...