PostgreSQL
 sql >> Datenbank >  >> RDS >> PostgreSQL

Ganzzahl außerhalb des zulässigen Bereichs und verbleibender Speicherplatz zu klein, um id in bigint und andere Lösungen zu konvertieren

Die Kommentare von Scott Marlowe und Vao Tsun funktionierten:

Öffnen Sie auf einem (Linux-)Server ein Terminal

Navigieren Sie dorthin, wo der neue Namensraum sein soll

Erstellen Sie ein Verzeichnis:mkdir dirname

Besitz an postgres übergeben:chown postgres:postgres dirname

Tabelle erstellen:CREATE TABLESPACE new_tbl_space LOCATION '/path/dirname'

Legen Sie die Tabelle in den Tablespace:alter table tbl set tablespace '/path/dirname'

tun, was so viel Speicherplatz beansprucht:ALTER TABLE tbl ALTER COLUMN id TYPE BIGINT;

Ändern Sie den Tablespace zurück:alter table tbl set tablespace pg_default

Entfernen Sie den Tablespace:Ich habe das in pgadmin4 in den Tablespaces gemacht Knoten/Objekt

(Das war aus dem Gedächtnis. Lassen Sie mich wissen, wenn ich etwas verpasst habe.)

Bearbeiten:Dies hat den Nebeneffekt, dass die gesamte Tabelle wie ein vollständiges Vakuum neu geschrieben wird, wodurch toter Speicherplatz freigegeben wird.