PostgreSQL
 sql >> Teknologi Basis Data >  >> RDS >> PostgreSQL

Kolom duplikat setelah beralih dari tipe data serial ke identitas di PostgreSQL / pgAdmin4

Setelah pencarian panjang, inilah yang saya temukan:

Memang hanya ada satu kolom yang bisa dikonfirmasi menggunakan psql. Namun menggunakan perintah pg_dump -st names <databasename> dari bash saya perhatikan bahwa ada 2 urutan yang didefinisikan terkait dengan kolom id:public.names_id_seq dan public.names_id_seq1 .

Ini juga dapat dikonfirmasi dengan menjalankan SELECT c.relname FROM pg_class c WHERE c.relkind = 'S'; dari psql tempat kedua urutan muncul.

Jika seseorang mencoba untuk menghapus public.names_id_seq1 seseorang mendapatkan kesalahan ERROR: cannot drop sequence apis_id_seq1 because column id of table apis requires it .

Solusi adalah menghapus urutan pertama dengan DROP SEQUENCE names_id_seq; Setelah menyegarkan pgAdmin4 kolom kedua hilang.

TL;DR

  1. Jalankan SELECT c.relname FROM pg_class c WHERE c.relkind = 'S'; dan mengidentifikasi urutan duplikat (yaitu yang ada versi dengan dan satu tanpa 1 di akhir)

  2. Hapus urutan yang berlebihan dengan DROP SEQUENCE <sequenceName_seq>; (hanya yang tanpa 1 di akhir yang dapat dihapus)

  3. Segarkan 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. Memvalidasi Cadangan PostgreSQL Anda di Docker

  2. Cara mengatasi FATAL:batas koneksi terlampaui untuk non-pengguna super

  3. Cara menginisialisasi database PostgreSQL tanpa menjalankan server PostgreSQL

  4. pg_restore Alternatif - Pencadangan PostgreSQL dan Pemulihan Otomatis dengan ClusterControl

  5. Postgresql 9.x:Indeks untuk mengoptimalkan kueri `xpath_exists` (XMLEXISTS)