есть ПК и в ПК можно записать неуникальное значение....
заметил в тот момент, когда пытался сделать инсерт в дочернюю таблицу и та жаловалась на FK - дескать, нет соответствующего значение в родительской. А оно было)))
Долго мучался, решил попробовать инсертнуть то же значение еще раз. И оно вставилось))) И инсерт в дочернюю прошёл.
Никто не сталкивался?
з.ы. нагуглил, что в районе 9й версии был какой-то баг, который допускал дубли в ПК. Но тут-то 15я, свежая
А что в pg_index с этим pk?
ОС апгрейдили? либо переключились на реплику на другой ОС? в частности, ищите смену версии libc. если была — надо реиндексировать
судя по timestamp проблемной записи, это было года два назад, т.е. за полтора года до моего прихода) REINDEX на таблице не помог наврное, напишем ф-цию, которая пройдет по всем id в таблице и попробует вставить дубликат. Там где получится, будем удалять и вставлять заново))
Ну, то есть у вас битая почему-то таблица -- и теперь вы в режыме слепого котёнка пытаетесь что-то с ней сделать. Удачи. И, главное -- бэкапы делайте...
Тем не менее — upgrade (миграция на другую) OS был или его не было? См. https://wiki.postgresql.org/wiki/Locale_data_changes > наврное, напишем ф-цию, которая пройдет по всем id в таблице и попробует вставить дубликат. Не надо так делать, никогда. Скорее всего, у Вас [откуда-то] corruption, и Вы его сейчас распространите. :(
а не знаю, все, кто этим раньше занимался мертвы. а что вы предлагаете тогда?
почитал ссылку по диагонали, по идее, это не должно аффектить int колонки
Да, не должно. Можете показать SELECT version(); и \d+ этой таблицы? И посмотрите в логи OS и PostgreSQL на предмет чего-то "нехорошего" — ошибок чтения диска, RAM и т.п.
Я предлагаю найти приличного DBA, знающего постгрес (возможно, на однократную работу) — или обратиться в компанию, спецыализирующуюся на управлении постгресами.
таких за пределами интернета нет же
нашли проблему. дело было в inheritance... select ... from ONLY table помогли найти проблему. Спасибо @Yaroslav_Schekin
Обсуждают сегодня