logo
GBase 8c
安装配置
问答

两个问题,一个是安装配置,一个是数据库开发sql相关的

GBase用户16885
发表于2024-06-12 17:49:38106次浏览4个评论

为提高效率,提问时请提供以下信息,问题描述清晰可优先响应。

【GBase版本】: GBase 8c v5

【操作系统】: centos7.6

【CPU】:intel

【问题描述】*:

1.对于GBase 8c v5是不是只兼容Postgre,而不兼容MySQL,还是说有配置能修改到底兼容哪一种;

2.如果一个表my_table,在创建的时候没有指定为分布式表,然后想通过sql【ALTER TABLE my_table ADD CONSTRAINT unique_constraint_column1 UNIQUE ("column1");】语句增加一个列的唯一约束,但是提示了错误【Unique index of distributed table must contain the hash/modulo distribution column.】,这是不是说明只能在创建表的时候把表设置为分布式表,才能通过sql语句增加列的唯一约束?

评论

登录后才可以发表评论
导演发表于 1 年前
1、并不是,GBase 8c有多种兼容模式,除了PG,也有Oracle、MySQL的兼容能力,可以在建库的时候通过DBCOMPATIBILITY参加指定,例如DBCOMPATIBILITY=A时,Oracle兼容性更好,B对应MySQL、PG对应PostgreSQL;

2、如果my_table在创建的时候没有指定为分布式表,实际是默认会使用该表的第一个字段作为分布键。换言之,如果一张表在创建时没有指定是复制表,那么该表就是分布表。因此【Unique index of distributed table must contain the hash/modulo distribution column.】这条报错,是指唯一索引中要包含分布键。在这个例子中,即my_table的第一个字段。
GBase用户16885发表于 1 年前
@导演:谢谢回复!
第2个问题把my_table的第一个字段加上,就好了;
第1个问题我通过【select * from PG_DATABASE】确定当前数据库兼容模式是A(oracle),但是我运行一个创建存储过程的脚本,会提示错误,这个脚本在oracle里可以正常创建成功
脚本:
CREATE OR REPLACE PROCEDURE "postgres"."test_procedure"(
c1 IN NUMBER,
c2 IN NUMBER,
c3 OUT NUMBER
) AS
BEGIN
c3 := c1 + c2;
END;
错误:ERROR: subprogram body is not ended correctly at end of input
Position: 146
小忘发表于 1 年前
@GBase用户16885:pdbdxjk=> CREATE OR REPLACE PROCEDURE "test_procedure"(
pdbdxjk(> c1 IN NUMBER,
pdbdxjk(> c2 IN NUMBER,
pdbdxjk(> c3 OUT NUMBER
pdbdxjk(> ) AS
pdbdxjk$> BEGIN
pdbdxjk$> c3 := c1 + c2;
pdbdxjk$> END;
pdbdxjk$> /
CREATE PROCEDURE
pdbdxjk=>

以上是gsql执行结果, 用的是啥工具,末尾加一个 / 试试
GBase用户16885发表于 1 年前
@小忘:dbeaver sql editor和.net的程序都不行