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

Setelah memulihkan serial database saya dihapus dari kolom di Postgresql

Anda tidak memeriksa kesalahan selama pemulihan database; seharusnya ada beberapa.

Dump dari tabel seperti milik Anda akan terlihat seperti ini di PostgreSQL v10 (ini 10.3 dan terlihat sedikit berbeda di 10.1, tapi itu tidak relevan untuk kasus ini):

CREATE TABLE public.produto (
    produto_id integer NOT NULL
);

ALTER TABLE public.produto OWNER TO laurenz;

CREATE SEQUENCE public.produto_produto_id_seq
    AS integer
    START WITH 1
    INCREMENT BY 1
    NO MINVALUE
    NO MAXVALUE
    CACHE 1;

ALTER TABLE public.produto_produto_id_seq OWNER TO laurenz;

ALTER SEQUENCE public.produto_produto_id_seq
    OWNED BY public.produto.produto_id;

ALTER TABLE ONLY public.produto
    ALTER COLUMN produto_id
    SET DEFAULT nextval('public.produto_produto_id_seq'::regclass);

Sekarang masalahnya adalah AS integer diperkenalkan ke CREATE SEQUENCE di PostgreSQL v10, sehingga pernyataan itu akan gagal dengan kesalahan sintaksis di 9.6.

Apa akibatnya?

  • Tabel dibuat seperti pada pernyataan pertama.

  • Pernyataan ketiga yang membuat urutan gagal.

  • Semua pernyataan berikut yang memerlukan urutan juga akan gagal.

Catatan: Tidak didukung untuk menurunkan versi PostgeSQL dengan dump dan restore.

Solusinya adalah mengedit dump secara manual hingga berfungsi, khususnya Anda harus menghapus AS integer atau AS bigint klausa dalam CREATE SEQUENCE .




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Kembalikan dump pada mesin jarak jauh

  2. Temukan n Tetangga Terdekat untuk Titik tertentu menggunakan PostGIS?

  3. gem install pg --with-pg-config berfungsi, bundel gagal

  4. Tutorial PostgreSQL Untuk Pemula – Yang Perlu Anda Ketahui Tentang PostgreSQL

  5. Batasan nama kolom tabel Postgres?