Недавно я увидел странный сценарий с моей базой данных PostgreSQL.Информационная схема моей базы данных показывает другое имя последовательности, чем то, которое фактически выделено для столбца моей таблицы.
Проблема:
У меня есть таблица tab_1
id name
1 emp1
2 emp2
3 emp3
Ранее столбец id
(integer
) таблицы был автоматически сгенерированным полем, в котором порядковый номер был сгенерирован во время выполнения через JPA. (имя последовательности: tab_1_seq
)
Мы внесли изменение и обновили столбец таблицы id
до bigserial
, и последовательность сохраняется на уровне столбца (выделеноновая последовательность: tab_1_temp_seq
) больше не обрабатывается JPA.
После этого изменения все работало в течение нескольких месяцев, и после этого мы столкнулись с ошибкой - "последовательность" tab_1_temp_seq "в этом сеансе еще не определено "
При анализе проблемы я обнаружил несоответствие между последовательностями, выделенными для таблицы.
В структуре таблицы мы гдепоказана последовательность как tab_1_temp_seq
, а в таблице information_schema
таблица была назначена со старой последовательностью - tab_1_seq
.
Я не уверен, что на самом деле вызвало это, так как мы не управляем нашей системой баз данных.Если у вас возникли какие-либо проблемы, подобные этой, пожалуйста, дайте мне знать его основную причину.
Запросы:
ВЫБЕРИТЕ имя_таблицы, имя_столбца, имя_столбца из файла information_schema.columns где имя_таблицы ='tab_1';
результат:
table_name column_name column_default
tab_1 id nextval('tab_1_seq::regclass')
Ниже приведена подробная информация в структуре / свойствах таблицы:
id nextval('tab_1_temp_seq::regclass')
name varChar