错误:分布式表的唯一索引必须包含散列分布列。啥时候从 postgresql 迁移到 postgresql-xl
Posted
技术标签:
【中文标题】错误:分布式表的唯一索引必须包含散列分布列。啥时候从 postgresql 迁移到 postgresql-xl【英文标题】:ERROR: Unique index of distributed table must contain the hash distribution column. when do migration from postgresql to postgresql-xl错误:分布式表的唯一索引必须包含散列分布列。什么时候从 postgresql 迁移到 postgresql-xl 【发布时间】:2019-10-24 09:41:32 【问题描述】:我通过 pg_dump 从 postgresql 转储 sql 并得到下表定义:
CREATE TABLE administrator (
mtime bigint,
email text,
group_id bigint,
user_account text NOT NULL
);
ALTER TABLE ONLY administrator ADD CONSTRAINT administrator_pkey PRIMARY KEY (user_account);
我设置 postgresql-xl 然后导入它返回的 sql 文件:
错误:分布式表的唯一索引必须包含散列分布列。
Postgres-XL manual 说:
如果未指定 DISTRIBUTE BY,则将选择具有 UNIQUE 约束的列作为分布键。如果未指定此类列,则分布列是定义中的第一个符合条件的列。如果没有找到这样的列,则该表将由 ROUNDROBIN 分发。
如果这是真的,为什么我的 sql 文件导入仍然返回错误?
【问题讨论】:
我认为当您创建该表时,它会自动选择 mtime 作为分布列。因此,您不能添加主键。尝试使主键定义成为创建表的一部分。我认为它会这样工作。 【参考方案1】:Drop Table administrator ;
CREATE TABLE administrator (
mtime bigint,
email text,
group_id bigint,
user_account text NOT NULL
) DISTRIBUTE BY HASH(user_account);
ALTER TABLE administrator ADD CONSTRAINT administrator_pkey PRIMARY KEY (user_account);
将解决问题。
【讨论】:
以上是关于错误:分布式表的唯一索引必须包含散列分布列。啥时候从 postgresql 迁移到 postgresql-xl的主要内容,如果未能解决你的问题,请参考以下文章