sql >> データベース >  >> RDS >> PostgreSQL

Postgresqlの列から削除されたデータベースシリアルを復元した後

    データベースの復元中にエラーをチェックしませんでした。いくつかあったはずです。

    あなたのようなテーブルのダンプは、PostgreSQL v10では次のようになります(これは10.3であり、10.1ではわずかに異なりますが、この場合は関係ありません):

    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);
    

    ここで問題となるのは、AS integer CREATE SEQUENCEに導入されました PostgreSQL v10では、そのステートメントは9.6の構文エラーで失敗します。

    結果はどうなりますか?

    • テーブルは最初のステートメントのように作成されます。

    • シーケンスを作成する3番目のステートメントは失敗します。

    • シーケンスを必要とする以下のすべてのステートメントも失敗します。

    注: ダンプと復元を使用してPostgeSQLをダウングレードすることはサポートされていません。

    解決策は、ダンプが機能するまで手動で編集することです。特に、AS integerを削除する必要があります。 またはAS bigint CREATE SEQUENCEの句 。




    1. SQLServerのトランザクションレプリケーションの問題

    2. すべてのSQLServer外部キーに一致するインデックスが必要ですか?

    3. 最も遅いクエリを見つける方法

    4. PostgreSQL JSON列をJSONBにアップグレードしますか?