PostgreSQL
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> PostgreSQL

Cột trùng lặp sau khi chuyển từ loại dữ liệu nối tiếp sang danh tính trong PostgreSQL / pgAdmin4

Sau thời gian dài tìm kiếm, đây là những gì tôi tìm thấy:

Thực sự chỉ có một cột có thể được xác nhận bằng cách sử dụng psql. Tuy nhiên bằng cách sử dụng lệnh pg_dump -st names <databasename> từ bash, tôi nhận thấy rằng có 2 chuỗi được xác định liên kết với cột id:public.names_id_seqpublic.names_id_seq1 .

Điều này cũng có thể được xác nhận bằng cách chạy SELECT c.relname FROM pg_class c WHERE c.relkind = 'S'; từ psql nơi cả hai chuỗi đều hiển thị.

Nếu ai đó cố gắng xóa public.names_id_seq1 một người gặp lỗi ERROR: cannot drop sequence apis_id_seq1 because column id of table apis requires it .

Giải pháp là xóa chuỗi đầu tiên có DROP SEQUENCE names_id_seq; Sau khi làm mới pgAdmin4, cột thứ hai đã biến mất.

TL; DR

  1. Chạy SELECT c.relname FROM pg_class c WHERE c.relkind = 'S'; và xác định các trình tự trùng lặp (tức là những trình tự có phiên bản có và một trình tự không có số 1 ở cuối)

  2. Xóa chuỗi thừa bằng DROP SEQUENCE <sequenceName_seq>; (chỉ cái không có số 1 ở cuối mới có thể bị xóa)

  3. Làm mới 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. Kích thước bảng với bố cục trang

  2. Khóa chính với thứ tự ASC hoặc DESC?

  3. Kiểm tra xem một hàng có tồn tại hay không trong postgresql

  4. Làm thế nào để tổng hợp tất cả các hàng dựa trên một cột liệt kê trong PostgreSQL part2?

  5. Postgre SQL bỏ qua điều kiện lọc nếu giá trị là null