Грабельки SQLные. Очередные.

Сегодня утром немножко сломался скриптик, импортирующий в базу записи, приезжающие от партнёра. Скриптик рабочий, трудится уже много месяцев. Да и сломался он не совсем – не может добавить в таблицу некоторые отдельные записи. Остальные успешно добавляет, а эти никак.

Попытался вручную – натурально не добавляется. “Unique constraint (foo.bar) violated, пошли все нафиг” – говорит сервер. Ищу запись по ID – нет такой. Внимательно приглядываюсь к описанию violated constraint и обнаруживаю, что это про уникальность имени, а не ID. Ищу запись по такому имени – а её тоже нет. Но новая не добавляется. Чертовщина какая-то.

А разгадка оказалась проста. Можно предлагать в качестве задания на собеседовании DBA :)

Имя оказалось длиннее, чем колонка в таблице. И при попытке добавления благополучно обрезалось, а в обрезанном виде оно в базе уже было, и новая запись не добавлялась. А при поиске данные из базы сравнивались с полным именем, и естественно, такого имени не находилось.

This entry was posted in Uncategorized and tagged , , . Bookmark the permalink.

Leave a Reply