PostgreSQL
 sql >> база данни >  >> RDS >> PostgreSQL

Дублирана колона след превключване от сериен към тип данни за идентичност в PostgreSQL / pgAdmin4

След продължително търсене ето какво намерих:

Наистина има само една колона, която може да бъде потвърдена с помощта на psql. Въпреки това с помощта на командата pg_dump -st names <databasename> от bash забелязах, че има 2 дефинирани последователности, свързани с колоната с id:public.names_id_seq и public.names_id_seq1 .

Това може да бъде потвърдено и чрез изпълнение на SELECT c.relname FROM pg_class c WHERE c.relkind = 'S'; от psql, където се показват и двете последователности.

Ако някой се опита да изтрие public.names_id_seq1 човек получава грешката ERROR: cannot drop sequence apis_id_seq1 because column id of table apis requires it .

Решението е да изтриете първата последователност с DROP SEQUENCE names_id_seq; След опресняване на pgAdmin4 втората колона изчезна.

TL;DR

  1. Изпълнете SELECT c.relname FROM pg_class c WHERE c.relkind = 'S'; и идентифицирайте дублиращи се последователности (т.е. тези, където има версия с и една без 1 в края)

  2. Изтрийте излишната последователност с DROP SEQUENCE <sequenceName_seq>; (само този без 1 в края може да бъде изтрит)

  3. Опреснете pgAdmin4




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как да накарам заявката date_part да достигне индекс?

  2. Как да използвам променливи настройки в тригерни функции?

  3. Тригер за актуализиране на PostgreSQL

  4. Анотирана хронология на Google Vis от SQL база данни, използваща проблем с PHP JSON

  5. MQTT клиент се абонира за PostgreSQL DB Changes