华为云用户手册

  • E CS 网卡内部网络配置问题 以下步骤以Linux系统为例,Windows操作系统请检查系统防火墙限制。 确认弹性云服务器是否有多网卡配置。如果配置多网卡且弹性公网IP绑定在非主网卡上,请在弹性云服务内部配置策略路由。 具体请参见如何配置多网卡弹性云服务器的策略路由?。 登录弹性云服务器,执行以下命令,查看网卡是否创建且网卡获取私有IP地址。若无网卡信息或者无法获取私有IP地址,请联系技术支持。 ifconfig 图3 查看网卡IP地址 执行以下命令,查看弹性云服务器的CPU占用率是否过高,CPU占有率超过80%有可能会影响ECS通信。 top 执行以下命令,查看弹性云服务器内容部是否有安全规则的其他限制。 iptables-save 执行以下命令,查看“/etc/hosts.deny”文件中是否包含了限制通信的IP地址。 vi /etc/hosts.deny 如果hosts.deny文件里面包含了对端的IP地址,请将该IP从hosts.deny文件中删除并保存文件。
  • 接入 云桌面 时,如果有配置防火墙、安全组等访问控制,需要放通的云桌面相关业务IP与端口。 表1 云桌面相关业务IP与端口 接入场景 IP 端口 协议 描述 互联网接入 接入地址IP 443 TCP 互联网接入地址。 桌面接入网关公网IP 8443 TCP HDP协议基于TCP进行数据通信的端口。 8502-8509 UDP HDP协议基于UDP进行数据通信的端口。 8601 TCP 浏览器与接入网关之间,基于Websocket进行数据通信的TCP端口。 桌面接入网络加速节点 20000-20063 UDP 云桌面接入的网络加速节点IP。 6447、6443、443 TCP 客户端软件下载地址 443 TCP 云桌面客户端的软件包下载地址。 客户端指标上报IP 443 TCP 云桌面接入时的网络时延、抖动、丢包率等指标上报。 云专线接入 接入地址IP 443 TCP 云专线接入地址。 桌面接入网关私网IP 8443 TCP HDP协议基于TCP进行数据通信的端口。 8502-8509 UDP HDP协议基于UDP进行数据通信的端口。 8601 TCP 浏览器与接入网关之间,基于Websocket进行数据通信的TCP端口。 上述表格中的相关IP有可能会变化,建议防火墙、安全组等访问控制针对端口放通。 如果需要针对IP放通,请联系管理员参考提交工单,填写工单信息,获取技术支持。 父主题: 管理员常见问题
  • GAUSS-00881 -- GAUSS-00890 GAUSS-00881: "adding partition name conflict with existing partitions" SQLSTATE: XX000 错误原因:为关系表增加的分区与已有分区名字冲突,不能进行此操作。 解决办法:请选择新的分区名,避免冲突。 GAUSS-00882: "upper boundary of adding partition MUST overtop last existing partition" SQLSTATE: XX000 错误原因:关系表新增分区的上边界必须大于最后一个现有分区的上边界。 解决办法:请更改新增分区的上边界。 GAUSS-00883: "could not acquire AccessExclusiveLock on dest table partition '%s', %s failed" SQLSTATE: XX000 错误原因:没有拿到分区的AccessExclusiveLock。 解决办法:可能由于并发冲突引起,稍后再试。 GAUSS-00884: "Cannot drop the only partition of a partitioned table" SQLSTATE: XX000 错误原因:删除表分区操作时,无法删除关系表的最后一个分区。 解决办法:不能删除关系表的最后一个分区,建议取消本操作。 GAUSS-00886: "no local index defined on partition %u" SQLSTATE: XX000 错误原因:该分区中不能查找到本地索引。 解决办法:建议重新检查本操作的分区和索引名称,不存在次索引可以取消本操作。 GAUSS-00887: "can not set unusable index for relation %s , as it is not a index" SQLSTATE: XX000 错误原因:在检测索引有效性时,发现本索引无效,故不能为关系表设置此索引。 解决办法:建议检查该索引的有效性,若无效许修改此索引。 GAUSS-00888: "could not find tuple for relation %u" SQLSTATE: XX000 错误原因:在执行ModifyRowMovement操作时,检测到无法获取关系表的元组,故不能进行此操作。 解决办法:建议检查关系表的元组属性,或取消此操作。 GAUSS-00889: "cannot truncate a partition owned by partitioned table which is referenced in a foreign key constraint" SQLSTATE: XX000 错误原因:被外键(foreign key)引用限制的分区表不能截断其分区。 解决办法:建议取消该分区表的外键引用限制,或者取消此操作。 GAUSS-00890: "can not merge index partition %s because it is unusable local index" SQLSTATE: XX000 错误原因:针对不可用的本地索引,不可合并索引分区。 解决办法:建议检查本地索引的可用性并修改,或者取消此操作。 父主题: GAUSS-00801 -- GAUSS-00900
  • GAUSS-50300 -- GAUSS-50399 GAUSS-50300: "User %s does not exist." SQLSTATE: 无 错误原因:用户不存在。 解决办法:检查用户不存在的原因,创建用户。 GAUSS-50301: "The cluster user/group cannot be a root user/group." SQLSTATE: 无 错误原因:集群用户的用户/组不能是root用户/组。 解决办法:更改集群用户的用户/组。 GAUSS-50302: "The cluster user cannot be a user with the root permission." SQLSTATE: 无 错误原因:集群用户不能拥有root权限。 解决办法:更改集群用户的权限或切换没有root权限的其他集群用户。 GAUSS-50304: "The new user [%s] is not the same as the old user [%s]." SQLSTATE: 无 错误原因:新旧用户不匹配。 解决办法:更改用户,使之与旧用户匹配。 GAUSS-50305: "The user is not matched with the user group." SQLSTATE: 无 错误原因:用户和用户组不匹配。 解决办法:检查修改用户和用户组,使之相匹配。 GAUSS-50306: "The password of %s is incorrect." SQLSTATE: 无 错误原因:密码错误。 解决办法:检查并修改为使用正确的密码。 GAUSS-50307: "User password has expired." SQLSTATE: 无 错误原因:用户密码过期。 解决办法:请检查并修改密码。 GAUSS-50308: "Failed to obtain user information" SQLSTATE:无 错误原因:获取用户信息失败。 解决办法:检查用户信息是否正确。 GAUSS-50309: "Failed to obtain password change times of data base super user" SQLSTATE:无 错误原因:获得数据库初始用户修改密码次数失败。 解决办法:检查是否修改过初始用户的密码,如果没有,请修改密码。 GAUSS-50311: "Failed to change password for %s." SQLSTATE:无 错误原因:为用户更改密码失败。 解决办法:检查/temp/temp.[user]文件是否有读权限,文件内容是否正确。 GAUSS-50313: "Failed to delete %s group." SQLSTATE:无 错误原因:删除组失败。 解决办法:1.检查要删除组是否存在;2.检查集群状态是否正常。 GAUSS-50314: "Failed to delete %s user." SQLSTATE:无 错误原因:删除用户失败。 解决办法:检查待删除的用户是否存在。 GAUSS-50315: "The user %s is not matched with the owner of %s." SQLSTATE:无 错误原因:用户与路径的属主不匹配。 解决办法:修改路径的属主。 GAUSS-50317: "Failed to check user and password." SQLSTATE:无 错误原因:检查用户和密码失败。 解决办法:检查集群中各节点的用户和密码是否正确。 GAUSS-50318: "Failed to add %s user." SQLSTATE:无 错误原因:添加用户操作失败。 解决办法:根据useradd命令执行结果,解决问题。然后重新调用命令。 GAUSS-50319: "Failed to add %s group.” 错误原因:添加用户组操作失败。 解决办法:根据groupadd命令执行结果,解决问题。然后重新调用命令。 父主题: GAUSS-50000 -- GAUSS-50999
  • GAUSS-01921 -- GAUSS-01930 GAUSS-01921: "return type of transition function %s is not %s" SQLSTATE: 42804 错误原因:依据transfn确定的返回类型与声明的返回类型不相匹配。 解决办法:对于复合类型必须确保其返回类型与声明的一致性。 GAUSS-01922: "must not omit initial value when transition function is strict and transition type is not compatible with input type" SQLSTATE: 42P13 错误原因:当转换函数是严格的,且转换类型与输入类型不一致时,不可忽略初始值的类型。 解决办法:此时确保第一个值的类型必须与转换类型一致,或至少是二进制兼容的。 GAUSS-01923: "return type of collection function %s is not %s" SQLSTATE: 42804 错误原因:collection函数的返回类型与预期的aggTreanType不同。 解决办法:检查是否调用了正确的collection函数。 GAUSS-01924: "cannot determine result data type" SQLSTATE: 42804 错误原因:由于没有输入项导致无法确认返回的数据类型。 解决办法:请确认输入的参数类型是正确的,这样才可确定返回结果类型。 GAUSS-01925: "sort operator can only be specified for single-argument aggregates" SQLSTATE: 42P13 错误原因:排序算子只能出现在单参数的聚集函数中。 解决办法:请确认该聚集函数的参数个数,并确认是否需要调用排序算子。 GAUSS-01926: "function %s returns a set" SQLSTATE: 42804 错误原因: 聚集函数只能返回单个值不可返回一个集合。 解决办法:请确认聚集函数的返回情况。 GAUSS-01927: "function %s requires run-time type coercion" SQLSTATE: 42804 错误原因:函数要求在执行过程中进行类型强转,但是在nodeAgg.c中并没有处理该场景。 解决办法:确保在执行过程中不存在类型转换。 GAUSS-01928: "cannot drop %s because %s requires it" SQLSTATE: 2BP01 错误原因:由于其他对象依赖他,无法删除这个对象。 解决办法:解除这种依赖或者删除依赖对象。 GAUSS-01929: "incorrect use of PIN dependency with %s" SQLSTATE: XX000 错误原因:系统内部错误。 解决办法:请联系技术支持工程师提供技术支持。 GAUSS-01930: "unrecognized dependency type '%c' for %s" SQLSTATE: XX000 错误原因:系统内部错误。 解决办法:请联系技术支持工程师提供技术支持。 父主题: GAUSS-01901 -- GAUSS-02000
  • GAUSS-04281 -- GAUSS-04290 GAUSS-04281: "Execute command %s fail: %m" SQLSTATE: XX000 错误原因:系统内部错误。 解决办法:请联系技术支持工程师提供技术支持。 GAUSS-04282: "Execute command %s fail : %m" SQLSTATE: XX000 错误原因:系统内部错误。 解决办法:请联系技术支持工程师提供技术支持。 GAUSS-04283: "pg_largeobject entry for OID %u, page %d has invalid data field size %d" SQLSTATE: XX001 错误原因:大对象的片断长度无效,数据损坏。 解决办法:请尝试使用已备份的数据进行恢复,或者请联系技术支持工程师提供技术支持。 GAUSS-04284: "exceeded maxAllocatedDescs (%d) while trying to open file '%s:%d'" SQLSTATE: 53000 错误原因:系统内部错误。 解决办法:请联系技术支持工程师提供技术支持。 GAUSS-04285: "exceeded maxAllocatedDescs (%d) while trying to open file '%s'" SQLSTATE: 53000 错误原因:系统内部错误。 解决办法:请联系技术支持工程师提供技术支持。 GAUSS-04286: "exceeded maxAllocatedDescs (%d) while trying to open directory '%s'" SQLSTATE: 53000 错误原因:系统内部错误。 解决办法:请联系技术支持工程师提供技术支持。 GAUSS-04287: "must have at least one column" SQLSTATE: 0A000 错误原因:CREATE TABLE语法没有指定表的列信息。 解决办法:请确认CREATE TABLE table_name({column_name data_type})语法中表名后面的列名信息为空,需要至少指定一列。 GAUSS-04288: "partition index '%s' does not exist" SQLSTATE: 42710 错误原因:通过语法ALTER INDEX..RENAME PARTITION..TO重命名索引分区时,指定的分区索引不存在。 解决办法:请确认ALTER INDEX [ IF EXISTS ] index_name RENAME PARTITION partition_name TO new_partition_name;语法中指定的分区名partition_name是否存在。 GAUSS-04290: "length of field '%s' longer than limit of \'%d\'" SQLSTATE: 22P04 错误原因:使用Fixed格式的GDS外表进行导出时列数据长度大于外表表明长度。 解决办法:请根据报错信息修改外表定义。 父主题: GAUSS-04201 -- GAUSS-04300
  • GAUSS-04771 -- GAUSS-04780 GAUSS-04771: "Snapshot too old." SQLSTATE: XX000 错误原因:查询的快照是旧的快照。 解决办法:可尝试重新执行。 GAUSS-04772: "Load CU failed in adio! spcNode(%u), dbNode(%u), relNode(%u), columnId(%d), cuid(%u)" SQLSTATE: XX000 错误原因:列存储读取数据文件失败。 解决办法:请确保数据文件状态正常,若数据文件异常,请从备机或备份数据中恢复。 GAUSS-04773: "Prefetch the CU data(%u) file of column(%d) of relation id(%s) contains incorrect checksum" SQLSTATE: XX000 错误原因:crc校验失败,数据文件损坏。 解决办法:从备机或者备份数据恢复集群数据文件。 GAUSS-04774: "Sync load the CU data(%u) file of column(%d) of relation(%s) contains incorrect checksum" SQLSTATE: XX000 错误原因:crc校验失败,数据文件损坏。 解决办法:从备机或者备份数据恢复集群数据文件。 GAUSS-04776: "The relation '%s' has no distribute type." SQLSTATE: 0A000 错误原因:所查询的表没有分布类型,比如在CN查询desc表。 解决办法:此类表只可以在DN查询。 GAUSS-04777: "This operation is not supported" SQLSTATE: XX000 错误原因:guc参数enable_cluster_resize设置为true,与当前DML操作的子计划仅在CN上执行不匹配。 解决办法:当DML操作的子计划仅在CN上执行时,需要将guc参数enable_cluster_resize设置为false。 GAUSS-04778: "cache lookup failed for relation %u." SQLSTATE: 42P01 错误原因:系统内部从缓存中查找表失败。 解决办法:系统内部错误。请联系技术支持工程师提供技术支持。 GAUSS-04779: "Upper-level GROUPING found where not expected" SQLSTATE: XX000 错误原因:上层的grouping不能存在于subplan中。 解决办法:重新写语义相同的SQL语句。 GAUSS-04780: "GROUPING found where not expected" SQLSTATE: XX000 错误原因:where等字句中不能含有grouping。 解决办法:请修改SQL语句。 父主题: GAUSS-04701 -- GAUSS-04800
  • GAUSS-00521 -- GAUSS-00530 GAUSS-00521: "cannot change the tablespace of the currently open database" SQLSTATE: 55006 错误原因:通过ALTER DATABASE SET TABLESPACE语法修改数据库表空间时,该数据库正在被其他用户打开,不能执行当前操作。 解决办法:请确认当前待执行的修改数据库表空间操作中的数据库是否正在被其他用户打开,如果已被其他用户打开,请将数据库退出后再次尝试执行该操作。 GAUSS-00522: "some relations of database '%s' are already in tablespace '%s'" SQLSTATE: 55000 错误原因:通过ALTER DATABASE SET TABLESPACE语法修改数据库表空间时,该数据库的表空间目录下已经存在表、索引、视图等关系对象,不能执行当前操作。 解决办法:请确认当前待执行的修改数据库表空间操作中的数据库中是否已经存在表、索引、试图等关系对象,需要先删除已存在的对象后再次尝试执行该操作。 GAUSS-00523: "could not remove directory '%s': %m" SQLSTATE: XX000 错误原因:系统内部错误。 解决办法:请联系技术支持工程师提供技术支持。 GAUSS-00524: "permission denied to change owner of database" SQLSTATE: 42501 错误原因:使用ALTER DATABASE name OWNER TO newowner语法修改数据库所有者时,当前用户没有权限执行该操作。 解决办法:使用ALTER DATABASE name OWNER TO newowner语法修改数据库所有者时,请确认当前用户是否为数据库所有者权限的用户或管理员用户,其他用户没有权限执行该操作。 GAUSS-00525: "dbase_redo: unknown op code %u" SQLSTATE: XX000 错误原因:系统内部错误。 解决办法:请联系技术支持工程师提供技术支持。 GAUSS-00526: "could not create directory '%s': %m" SQLSTATE: XX000 错误原因:"创建数据库的表空间时需要创建表空间对应的目录可能存在以下异常:1.不是管理员用户,没有权限访问该目录;2.文件系统为只读;3.该目录已经存在;4.磁盘已满,没有足够的空间创建目录;5.硬件存在问题导致I/O错误;6. GaussDB (DWS)数据库系统内部错误。" 解决办法:"创建数据库的表空间时需要创建表空间对应的目录存在异常,可以通过尝试如下方法排除问题:1.确认是否为管理员用户或当前数据库创建权限;2.确认文件系统为只读,可以修改文件系统权限为可写和可执行;3.如果该目录已经存在,则不需要创建表空间; GAUSS-00527: "could not stat directory '%s': %m" SQLSTATE: XX000 错误原因:创建数据库的表空间时需要创建表空间对应的目录是一个无效的非法目录。 解决办法:确认创建数据库的表空间时需要创建表空间对应的目录名是否是一个有效的目录。 GAUSS-00528: "'%s' exists but is not a directory" SQLSTATE: 42809 错误原因:创建数据库的表空间时该表空间对应的目录无效。 解决办法:确认创建数据库的表空间时需要创建表空间对应的目录名是否是一个有效的目录。 GAUSS-00529: "Permission denied to create tablespace '%s'." SQLSTATE: 42501 错误原因:当前用户没有权限在数据库中创建一个新的表空间。 解决办法:只有系统管理员才能在数据库中创建一个新的表空间,请使用系统管理员权限执行创建表空间操作。 GAUSS-00530: "tablespace location cannot contain single quotes" SQLSTATE: 42602 错误原因:使用CREATE TABLESPACE tablespace_name ...LOCATION语法指定表空间目录时,位置信息不能使用单引号标识。 解决办法:使用CREATE TABLESPACE tablespace_name ...LOCATION语法指定表空间目录时,位置信息字符串必须用双引号标识。 父主题: GAUSS-00501 -- GAUSS-00600
  • GAUSS-01771 -- GAUSS-01780 GAUSS-01771: "cannot create relations in temporary schemas of other sessions" SQLSTATE: 42P16 错误原因:不可在其它sessions的临时表空间中创建表。 解决办法:创建表之前需确认当前的sessions。 GAUSS-01772: "cannot create temporary relation in non-temporary schema" SQLSTATE: 42P16 错误原因:不可在非临时表空间中创建临时表。 解决办法:在创建临时表之前需先确认当时的空间名。 GAUSS-01773: "only temporary relations may be created in temporary schemas" SQLSTATE: 42P16 错误原因:在临时模式(或表空间)中只可能创建临时表。 解决办法:在创建对象前应先确认空间名,并依据表空间的特性来创建相应的对象 GAUSS-01774: "text search parser '%s' does not exist" SQLSTATE: 42704 错误原因:系统内部错误。 解决办法:请联系技术支持工程师提供技术支持。 GAUSS-01775: "text search dictionary '%s' does not exist" SQLSTATE: 42704 错误原因:TS文件路径找不到或者不存在。 解决办法:检查数据库实际创建的文件目录并核实路径的正确性。 GAUSS-01776: "text search template '%s' does not exist" SQLSTATE: 42704 错误原因:模板数据库不存在,因此其文件路径也是无效的。 解决办法:检查在创建数据库初始阶段是否正确创建了模板数据库,并检查模板数据库的文件路径是否正确。 GAUSS-01777: "%s is already in schema '%s'" SQLSTATE: 42P07 错误原因:在当前表空间中已经存在该对象。 解决办法:查询系统表,检查此模式中是否已经有同名对象。 GAUSS-01778: "cannot move objects into or out of temporary schemas" SQLSTATE: 0A000 错误原因:不可在临时表空间中进行移入或移出某个对象的操作。 解决办法:请确认需要移动的对象的来源和目的地是否是一个临时表空间,如果是,将不被允许。 GAUSS-01779: "cannot move objects into or out of TOAST schema" SQLSTATE: 0A000 错误原因:不可在toast表空间中进行移入或移出某个对象的操作。 解决办法:请确认需要移动的对象的来源和目的地是否是一个toast类型表空间,如果是,将不被允许。 GAUSS-01780: "cannot move objects into CSTORE schema" SQLSTATE: 0A000 错误原因:列存暂不支持移入其他表空间的对象。 解决办法:请确认当前表空间类型,如果为列存表空间,将不支持移入相关数据对象。 父主题: GAUSS-01701 -- GAUSS-01800
  • GAUSS-04741 -- GAUSS-04750 GAUSS-04741: "The count of address '%s' must be not greater than %d." SQLSTATE: 44000 错误原因:address的数量不能超过2个。 解决办法:创建DFS server时指定的address不能超过两个。 GAUSS-04742: "Unsupport ipv6 format" SQLSTATE: 44000 错误原因:DFS server的address不支持ipv6格式。 解决办法:创建DFS server的address改为ipv4格式。 GAUSS-04743: "The incorrect address format" SQLSTATE: 44000 错误原因:address的格式书写错误。 解决办法:查看正确描述address。 GAUSS-04744: "Failed to create DfsInsert handler when updating table." SQLSTATE: XX000 错误原因:系统内部错误。 解决办法:请联系技术支持工程师提供技术支持。 GAUSS-04745: "build global dfs space cache hash table failed" SQLSTATE: 42704 错误原因:系统内部错误。创建全局的HDFS连接缓存失败。 解决办法:请联系技术支持工程师提供技术支持。 GAUSS-04746: "The number of files exceeds the limit %d." SQLSTATE: 22000 错误原因:文件数量达到设定的上限值。 解决办法:请联系技术支持工程师提供技术支持。 GAUSS-04747: "could not initialize DFS space hash table" SQLSTATE: 42704 错误原因:不能创建用于缓存文件序号的hash table。 解决办法:请联系技术支持工程师提供技术支持。 GAUSS-04748: "Partition directory exceeds max length of one partition directory on attribute [%s], max allowed:%d" SQLSTATE: XX000 错误原因:存储分区表的分区目录名字长度超过了最大限制512字节。 解决办法:用户数据需要保证“分区键+分区键值”不超过512字节(含URI转码)。 GAUSS-04749: "could not initialize partition pruning result cache." SQLSTATE: XX000 错误原因:分区表导入过程中用以分区搜索的cache创建失败。 解决办法:检查机器是否有足够的内存来创建分区收索cache。 GAUSS-04750: "Unsupported data type on column:%s when forming partition signature" SQLSTATE: XX000 错误原因:分区表导入过程中发现分区键的数据类型不在支持的类型中。 解决办法:查看系统目录表是否有数据不一致情况,以创建的分区表分区列是否是不支持的分区类型。 父主题: GAUSS-04701 -- GAUSS-04800
  • GAUSS-01121 -- GAUSS-01130 GAUSS-01121: "cannot swap toast files by content when there's only one" SQLSTATE: XX000 错误原因:在扩容充分过程中,通过gs_switch_relfilenode函数交换两张表的物理文件时,待交换两张表中其中有一张表的toast表为空,不能交换两张表的物理文件。 解决办法:删除当前表,通过create table语法重新创建表,重建当前表的物理文件。 GAUSS-01122: "cannot swap toast files by links for system catalogs" SQLSTATE: XX000 错误原因:在扩容充分过程中,通过gs_switch_relfilenode函数交换两张表的物理文件时,不允许交换系统表的toast物理文件。 解决办法:在扩容充分过程中,通过gs_switch_relfilenode函数不允许交换系统表的物理文件,非法的操作。请确认函数的参数中是否包含有系统表的表名。 GAUSS-01123: "expected one dependency record for TOAST table, found %ld" SQLSTATE: XX000 错误原因:在扩容充分过程中,通过gs_switch_relfilenode函数交换两张表的物理文件时,由于toast表依赖的对象数大于1个,导致交换物理文件失败。 解决办法:确认toast表在pg_depend表中依赖的对象数大于1个,如果大于1个请先删除对象的依赖后再调用该函数交换物理文件。 GAUSS-01124: "expected none dependency record for partiton's TOAST table, found %ld" SQLSTATE: XX000 错误原因:重建分区表对分区文件进行交换操作处理时,如果待交换的表包含有toast表需要做toast表的文件交换。其中toast表有依赖对象,导致交换分区文件失败。 解决办法:对需要重建的分区表通过create table partition重新创建分区表。 GAUSS-01125: "expected one dependency record for CUDesc/Delta table, found %ld" SQLSTATE: XX000 错误原因:在扩容充分过程中,通过gs_switch_relfilenode函数交换两张列存表的物理文件时,由于列存表依赖的对象数大于1个,导致交换物理文件失败。 解决办法:确认列存表在pg_depend表中依赖的对象数大于1个,如果大于1个请先删除对象的依赖后再调用该函数交换物理文件。 GAUSS-01126: "expected none dependency record for partiton's CUDesc/Delta table, found %ld" SQLSTATE: XX000 错误原因:重建分区表对分区文件进行交换操作处理时,如果待交换的列存分区表需要做文件交换。其中分区列存表有依赖对象,导致交换分区文件失败。 解决办法:对需要重建的分区表通过create table partition重新创建分区表。 GAUSS-01127: "invalid statement name: must not be empty" SQLSTATE: 42P14 错误原因:非法的语句名:语句名不能为空。 解决办法:给出明确的语句名。 GAUSS-01128: "could not determine data type of parameter $%d" SQLSTATE: 42P18 错误原因:参数类型无法确定。 解决办法:修改参数值为系统可识别的类型,系统可识别类型《SQL语法参考》的“数据类型”章节。 GAUSS-01129: "utility statements cannot be prepared" SQLSTATE: 42P14 错误原因:DDL命令不能使用prepare。 解决办法:DDL语句无需prepare,直接执行即可。 GAUSS-01130: "EXECUTE does not support variable-result cached plans" SQLSTATE: XX000 错误原因:系统内部错误。 解决办法:请联系技术支持工程师提供技术支持。 父主题: GAUSS-01101 -- GAUSS-01200
  • GAUSS-01931 -- GAUSS-01940 GAUSS-01931: "cannot drop %s because other objects depend on it" SQLSTATE: 2BP01 错误原因:由于其他对象依赖他,无法删除这个对象。 解决办法:解除这种依赖或者删除依赖对象。 GAUSS-01932: "cannot drop desired object(s) because other objects depend on them" SQLSTATE: 2BP01 错误原因:由于其他对象依赖这些对象,无法删除这些对象。 解决办法:使用drop cascade来级联删除依赖对象。 GAUSS-01933: "invalid varlevelsup %d" SQLSTATE: XX000 错误原因:系统内部错误。 解决办法:请联系技术支持工程师提供技术支持。 GAUSS-01934: "invalid varno %d" SQLSTATE: XX000 错误原因:系统内部错误。 解决办法:请联系技术支持工程师提供技术支持。 GAUSS-01935: "already-planned subqueries not supported" SQLSTATE: XX000 错误原因:系统内部错误。 解决办法:请联系技术支持工程师提供技术支持。 GAUSS-01936: "invalid resultRelation %d" SQLSTATE: XX000 错误原因:系统内部错误。 解决办法:请联系技术支持工程师提供技术支持。 GAUSS-01937: "invalid objectSubId 0 for object class %u" SQLSTATE: XX000 错误原因:系统内部错误。 解决办法:请联系技术支持工程师提供技术支持。 GAUSS-01938: "could not find tuple for rule %u" SQLSTATE: XX000 错误原因:系统内部错误。 解决办法:请联系技术支持工程师提供技术支持。 GAUSS-01939: "no namespace name supplied" SQLSTATE: XX000 错误原因:创建namespace时,未提供namespace的名称。 解决办法:请提供namespace的名称。 GAUSS-01940: "primary keys cannot be expressions" SQLSTATE: 0A000 错误原因:主键不允许是表达式。 解决办法:请重新选择主键。 父主题: GAUSS-01901 -- GAUSS-02000
  • GAUSS-00821 -- GAUSS-00830 GAUSS-00821: "cannot inherit to temporary relation of another session" SQLSTATE: 42809 错误原因:ALTER TABLE INHERIT操作,不能继承到另一个会话的临时关系表。 解决办法:不支持继承到另一会话的临时关系表,建议取消本操作。 GAUSS-00822: "circular inheritance not allowed" SQLSTATE: 42P07 错误原因:ALTER TABLE INHERIT操作,不支持循环继承。 解决办法:不支持循环继承,建议取消本操作。 GAUSS-00823: "table '%s' without OIDs cannot inherit from table '%s' with OIDs" SQLSTATE: 42809 错误原因:ALTER TABLE INHERIT操作,没有OIDs的表不能继承。 解决办法:没有OIDs的表不能继承父表,建议更改修改本表具有OIDs。 GAUSS-00824: "column '%s' in child table must be marked NOT NULL" SQLSTATE: 42804 错误原因:ALTER TABLE INHERIT操作,parent table有not null限制,child table的列必需有not null限制。 解决办法:建议为child table增加not null列属性。 GAUSS-00825: "child table is missing column '%s'" SQLSTATE: 42804 错误原因:ALTER TABLE INHERIT操作,child table中有缺失的列,不能继承自parent table。 解决办法:建议添加child table中的缺失列,或取消本继承关系。 GAUSS-00826: "child table '%s' has different definition for check constraint '%s'" SQLSTATE: 42804 错误原因:ALTER TABLE INHERIT操作,child table与parent table有不同的约束定义,不能继承。 解决办法:建议将child table与parent table设置为相同的约束定义。 GAUSS-00827: "constraint '%s' conflicts with non-inherited constraint on child table '%s'" SQLSTATE: 42P17 错误原因:ALTER TABLE INHERIT操作,父表的约束与子表的非继承约束冲突,不能继承。 解决办法:建议更改子表或父表的约束限制。 GAUSS-00828: "child table is missing constraint '%s'" SQLSTATE: 42804 错误原因:ALTER TABLE INHERIT操作,子表缺少约束限制。 解决办法:建议更改此操作。 GAUSS-00829: "relation '%s' is not a parent of relation '%s'" SQLSTATE: 42P01 错误原因:ALTER TABLE NO INHERIT操作,当删除子表的父表约束时,检测出子表不存在该父表关系。 解决办法:不存在此子表父表关系,故不能直接删除。 GAUSS-00830: "typed tables cannot inherit" SQLSTATE: 42809 错误原因:ALTER TABLE OF操作,将一个表附加到复合类型时,类型表不能继承。 解决办法:检查ALTER TABLE操作,附加的继承表不能是复合类型。 父主题: GAUSS-00801 -- GAUSS-00900
  • GAUSS-00781 -- GAUSS-00790 GAUSS-00781: "cannot alter data type of distribute column" SQLSTATE: 0A000 错误原因:ALTER COLUMN TYPE操作,不能修改表的分布列的类型。 解决办法:暂不支持更改表的分布列的类型,只能修改非分布列的类型,可将分布列调整为其他列之后修改数据类型。 GAUSS-00782: "cannot refer to other columns in transform expression for column store table" SQLSTATE: 0A000 错误原因:列存表不支持在类型改变时更新数据引用其它列的值。 解决办法:避免列类型修改操作,通过新建表来达到同样目的。 GAUSS-00783: "transform expression must not return a set" SQLSTATE: 42804 错误原因:ALTER COLUMN TYPE操作,转换表达式不能返回集合。 解决办法:转换表达式不能返回集合,建议更改本操作。 GAUSS-00784: "cannot use subquery in transform expression" SQLSTATE: 0A000 错误原因:ALTER COLUMN TYPE操作,转换表达式不能包含子查询。 解决办法:转换表达式不能包含子查询,建议更改本操作。 GAUSS-00785: "cannot use aggregate function in transform expression" SQLSTATE: 42803 错误原因:ALTER COLUMN TYPE操作,转换表达式不能使用聚合函数。 解决办法:转换表达式不支持聚合函数,建议更改本操作。 GAUSS-00786: "cannot use window function in transform expression" SQLSTATE: 42P20 错误原因:ALTER COLUMN TYPE操作,转换表达式不能使用window函数。 解决办法:转换表达式不支持window函数,建议更改本操作。 GAUSS-00787: "column '%s' cannot be cast automatically to type %s" SQLSTATE: 42804 错误原因:ALTER COLUMN TYPE操作,列不能自动转化为某类型。 解决办法:建议指定列转换类型。 GAUSS-00788: "type of inherited column '%s' must be changed in child tables too" SQLSTATE: 42P16 错误原因:ALTER COLUMN TYPE操作,当parent table列的类型改变时,child table列类型也要随之改变。 解决办法:建议语句中指明子表随父表的变化递归变化。 GAUSS-00789: "cannot alter data type of partitioning column '%s'" SQLSTATE: 0A000 错误原因:ALTER COLUMN TYPE操作,不能更改分区表的列类型。 解决办法:分区表不支持更改列类型,建议更改本操作。 GAUSS-00790: "cannot alter type of column '%s' twice" SQLSTATE: 0A000 错误原因:ALTER COLUMN TYPE操作,不能同时两次更改某一列类型。 解决办法:不支持同时两次更改列类型,建议更改本操作。 父主题: GAUSS-00701 -- GAUSS-00800
  • GAUSS-00341 -- GAUSS-00350 GAUSS-00341: "cache lookup failed for opclass %u" SQLSTATE: XX000 错误原因:系统内部错误。 解决办法:请联系技术支持工程师提供技术支持。 GAUSS-00342: "Partitioned table does not support EXCLUDE index" SQLSTATE: 0A000 错误原因:特性不支持:CREATE TABLE ... CONSTRAINT语法中对于创建分区表不支持指定为排斥约束。 解决办法:修改CREATE TABLE ... CONSTRAINT语法,对于创建分区表指定为其他约束。 GAUSS-00343: "Invalid PRIMARY KEY/UNIQUE constraint for partitioned table" SQLSTATE: 0A000 错误原因:CREATE TABLE ... CONSTRAINT语法中对于创建分区表创建为主键约束或唯一(UNIQUE)约束的字段名没有包含分区表的分区键字段名。 解决办法:CREATE TABLE ... CONSTRAINT语法中对于创建分区表创建为主键约束或唯一(UNIQUE)约束的字段名必须包含分区表的分区键字段名。 GAUSS-00344: "multiple primary keys for table '%s' are not allowed" SQLSTATE: 42P16 错误原因:CREATE TABLE ... LIKE source_table语法LIKE子句中指定了多个INCLUDING INDEXES的主键。 解决办法:CREATE TABLE ... LIKE source_table语法LIKE子句中只能指定了1个INCLUDING INDEXES的主键。 GAUSS-00345: "cannot use an existing index in CREATE TABLE" SQLSTATE: 0A000 错误原因:错误的使用CREATE TABLE语法给索引字段指定约束。 解决办法:"ALTER TABLE ... ADD table_constraint语法给数据表增加一个新约束"。 GAUSS-00346: "index '%s' does not exist" SQLSTATE: 42704 错误原因:CREATE/ALTER TABLE语法中用于指定约束的属性名在关系表中不存在。 解决办法:请检查CREATE/ALTER TABLE语法中用于指定约束的属性名是否在关系表中存在。 GAUSS-00347: "index '%s' is already associated with a constraint" SQLSTATE: 55000 错误原因:不支持的用法。 解决办法:创建其它的索引。 GAUSS-00348: "index '%s' does not belong to table '%s'" SQLSTATE: 55000 错误原因:CREATE/ALTER TABLE table_name语法中指定约束的属性名在table_name中不存在。 解决办法:请检查CREATE/ALTER TABLE table_name语法中指定约束的属性名是否在table_name中存在。 GAUSS-00349: "index '%s' is not valid" SQLSTATE: 55000 错误原因:CREATE/ALTER TABLE语法中用于指定约束的属性名为无效值。 解决办法:请检查CREATE/ALTER TABLE语法中用于指定约束的属性名是否为关系表或模式中存在。 GAUSS-00350: "'%s' is not a unique index" SQLSTATE: 42809 错误原因:CREATE TABLE ... CONSTRAINT语法中对于创建分区表创建为主键约束或唯一(UNIQUE)约束的字段名不是唯一索引。 解决办法:CREATE TABLE ... CONSTRAINT语法中对于创建分区表创建为主键约束或唯一(UNIQUE)约束的字段名必须保证为唯一索引。 父主题: GAUSS-00301 -- GAUSS-00400
  • GAUSS-00751 -- GAUSS-00760 GAUSS-00751: "cluster key for relation '%s' already exists" SQLSTATE: 42710 错误原因:ALTER TABLE ADD CONSTRAINT操作时,关系表的cluster key已经存在,不能执行。 解决办法:新增约束已经存在,建议更改新增约束。 GAUSS-00752: "constraint must be added to child tables too" SQLSTATE: 42P16 错误原因:为父表添加CONSTRAINT时,该约束必需指定给其子表添加。 解决办法:将该约束限制同时添加给子表。 GAUSS-00753: "referenced relation '%s' is not a table" SQLSTATE: 42809 错误原因:为表添加外键限制时,外键约束的参考表必须是普通表。 解决办法:外键约束的参考表只能是普通表。 GAUSS-00754: "Invalid FOREIGN KEY constraints" SQLSTATE: 42809 错误原因:分区表可以创建外键约束,但是外键约束的参考表只能为普通表,不能为分区表。 解决办法:分区表可以创建外键约束,但是外键约束的参考表不能为分区表,建议修改外键约束的参照表。 GAUSS-00755: "constraints on permanent tables may reference only permanent tables" SQLSTATE: 42P16 错误原因:普通表的外键约束限制只能参照普通表。 解决办法:建议修改外键约束限制为普通表。 GAUSS-00756: "constraints on unlogged tables may reference only permanent or unlogged tables" SQLSTATE: 42P16 错误原因:unlogged表的外键约束限制只能参照普通表或unlogged表。 解决办法:unlogged表的约束限制只能参照普通表或unlogged表。 GAUSS-00757: "constraints on temporary tables may reference only temporary tables" SQLSTATE: 42P16 错误原因:临时表的外键约束限制只能参照表临时表。 解决办法:建议更改外键约束限制或者取消本操作。 GAUSS-00758: "constraints on temporary tables must involve temporary tables of this session" SQLSTATE: 42P16 错误原因:临时表的外键约束必需参照是本地临时表。 解决办法:建议更改外键约束限制或者取消本操作。 GAUSS-00759: "number of referencing and referenced columns for foreign key disagree" SQLSTATE: 42830 错误原因:为表添加外键约束时,被约束的字段数目需要和被引用的字段数目相同。 解决办法:建议更改外键约束操作,使被约束的字段数目与被引用的字段数目相同。 GAUSS-00760: "only b-tree indexes are supported for foreign keys" SQLSTATE: XX000 错误原因:外键对应主键的索引不是b-tree索引。 解决办法:检查主键唯一约束索引是否是b-tree索引。 父主题: GAUSS-00701 -- GAUSS-00800
  • 示例 创建用户alice: 1 CREATE ROLE alice PASSWORD '{Password}'; 创建用户bob: 1 CREATE ROLE bob PASSWORD '{Password}'; 创建数据表public.all_data: 1 CREATE TABLE public.all_data(id int, role varchar(100), data varchar(100)); 向数据表插入数据: 1 2 3 INSERT INTO all_data VALUES(1, 'alice', 'alice data'); INSERT INTO all_data VALUES(2, 'bob', 'bob data'); INSERT INTO all_data VALUES(3, 'peter', 'peter data'); 将表all_data的读取权限赋予alice和bob用户: 1 GRANT SELECT ON all_data TO alice, bob; 打开行访问控制策略开关: 1 ALTER TABLE all_data ENABLE ROW LEVEL SECURITY; 创建行访问控制策略,当前用户只能查看用户自身的数据: 1 CREATE ROW LEVEL SECURITY POLICY all_data_rls ON all_data USING(role = CURRENT_USER); 查看表all_data相关信息: 1 \d+ all_data 图1 查看all_data相关信息 当前用户执行SELECT操作: 1 SELECT * FROM all_data; 图2 SELECT操作 1 EXPLAIN(COSTS OFF) SELECT * FROM all_data; 图3 EXPLAIN操作 切换至alice用户: 1 SET ROLE alice PASSWORD '{Password}'; 执行SELECT操作: 1 SELECT * FROM all_data; 图4 执行SELECT操作 1 EXPLAIN(COSTS OFF) SELECT * FROM all_data; 图5 执行EXPLAIN操作
  • 语法格式 1 2 3 4 5 CREATE [ ROW LEVEL SECURITY ] POLICY policy_name ON table_name [ AS { PERMISSIVE | RESTRICTIVE } ] [ FOR { ALL | SELECT | UPDATE | DELETE } ] [ TO { role_name | PUBLIC } [, ...] ] USING ( using_expression )
  • 参数说明 policy_name 行访问控制策略名称,同一个数据表上行访问控制策略名称不能相同。 table_name 行访问控制策略的表名。 PERMISSIVE 指定行访问控制策略的类型为宽容性策略。对于一个给定的查询,将使用“OR”操作符将所有的宽容性策略组合。行访问控制策略的类型默认为宽容性策略。 RESTRICTIVE 指定行访问控制策略的类型为限制性策略。对于一个给定的查询,将使用“AND”操作符将所有的限制性策略组合。 至少需要一条宽容性策略允许对记录的访问。如果只有限制性策略存在,则不能访问任何记录。当宽容性和限制性策略共存时,只有当记录能通过至少一条宽容性策略以及所有的限制性策略时,该记录才能访问。 command 当前行访问控制影响的SQL操作,可指定操作包括:ALL、SELECT、UPDATE、DELETE。当未指定时,ALL为默认值,涵盖SELECT、UPDATE、DELETE操作。 当command为SELECT时,SELECT类操作受行访问控制的影响,只能查看到满足条件(using_expression返回值为TRUE)的元组数据,受影响的操作包括SELECT,UPDATE ... RETURNING,DELETE ... RETURNING。 当command为UPDATE时,UPDATE类操作受行访问控制的影响,只能更新满足条件(using_expression返回值为TRUE)的元组数据,受影响的操作包括UPDATE,UPDATE ... RETURNING,SELECT ... FOR UPDATE/SHARE。 当command为DELETE时,DELETE类操作受行访问控制的影响,只能删除满足条件(using_expression返回值为TRUE)的元组数据,受影响的操作包括DELETE,DELETE ... RETURNING。 行访问控制策略与适配的SQL语法关系参见下表: 表1 ROW LEVEL SECURITY策略与适配SQL语法关系 Command SELECT/ALL policy UPDATE/ALL policy DELETE/ALL policy SELECT Existing row No No SELECT FOR UPDATE/SHARE Existing row Existing row No UPDATE No Existing row No UPDATE RETURNING Existing row Existing row No DELETE No No Existing row DELETE RETURNING Existing row No Existing row role_name 行访问控制影响的数据库用户。 当未指定时,PUBLIC为默认值,PUBLIC表示影响所有数据库用户,可以指定多个受影响的数据库用户。 系统管理员不受行访问控制特性影响。
  • 功能描述 对表创建行访问控制策略。 对表创建行访问控制策略时,需打开该表的行访问控制开关(ALTER TABLE ... ENABLE ROW LEVEL SECURITY)策略才能生效,否则不生效。 当前行访问控制会影响数据表的读取操作(SELECT、UPDATE、DELETE),暂不影响数据表的写入操作(INSERT、MERGE INTO)。表所有者或系统管理员可以在USING子句中创建表达式,并在客户端执行数据表读取操作时,数据库后台在查询重写阶段会将满足条件的表达式拼接并应用到执行计划中。针对数据表的每一条元组,当USING表达式返回TRUE时,元组对当前用户可见,当USING表达式返回FALSE或NULL时,元组对当前用户不可见。 行访问控制策略名称是针对表的,同一个数据表上不能有同名的行访问控制策略;对不同的数据表,可以有同名的行访问控制策略。 行访问控制策略可以应用到指定的操作(SELECT、UPDATE、DELETE、ALL),ALL表示会影响SELECT、UPDATE、DELETE三种操作;定义行访问控制策略时,若未指定受影响的相关操作,默认为ALL。 行访问控制策略可以应用到指定的用户(角色),也可应用到全部用户(PUBLIC);定义行访问控制策略时,若未指定受影响的用户,默认为PUBLIC。
  • 注意事项 支持对行存表、行存分区表、列存表、列存分区表、复制表、unlogged表、hash表定义行访问控制策略。 不支持HDFS表、外表、临时表定义行访问控制策略。 不支持对视图定义行访问控制策略。 同一张表上可以创建多个行访问控制策略,一张表最多创建100个行访问控制策略。 具有管理员权限的用户、初始运维用户(Ruby)和表的拥有者不受行访问控制影响,可以查看表的全量数据。 通过SQL语句、视图、函数、存储过程查询包含行访问控制策略的表,都会受影响。 不支持对行访问控制策略依赖的列进行类型修改。例如,不支持如下修改: 1 ALTER TABLE public.all_data ALTER COLUMN role TYPE text;
  • 示例 创建一个角色,名为manager: 1 CREATE ROLE manager IDENTIFIED BY '{Password}'; 创建一个角色,从2015年1月1日开始生效,到2026年1月1日失效: 1 CREATE ROLE miriam WITH LOG IN PASSWORD '{Password}' VALID BEGIN '2015-01-01' VALID UNTIL '2026-01-01'; 创建一个角色,认证类型是LDAP,LDAP认证的其他信息由pg_hba.conf提供: 1 CREATE ROLE role1 WITH LOGIN AUTHINFO 'ldap' PASSWORD DISABLE; 创建一个角色,认证类型是LDAP,LDAP认证的fulluser信息在创建时指定,此时ldap大小写敏感,需要用单引号包含: 1 CREATE ROLE role2 WITH LOGIN AUTHINFO 'ldapcn=role2,cn=user,dc=lework,dc=com' PASSWORD DISABLE; 创建一个角色,登录密码有效期是30天: 1 CREATE ROLE role3 WITH LOGIN PASSWORD '{Password}' PASSWORD EXPIRATION 30;
  • 语法格式 1 CREATE ROLE role_name [ [ WITH ] option [ ... ] ] [ ENCRYPTED | UNENCRYPTED ] { PASSWORD | IDENTIFIED BY } { 'password' | DISABLE }; 其中角色信息设置子句option语法为: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 {SYSADMIN | NOSYSADMIN} | {AUDITADMIN | NOAUDITADMIN} | {CREATEDB | NOCREATEDB} | {USEFT | NOUSEFT} | {CREATEROLE | NOCREATEROLE} | {INHERIT | NOINHERIT} | {LOGIN | NOLOGIN} | {REPLICATION | NOREPLICATION} | {INDEPENDENT | NOINDEPENDENT} | {VCADMIN | NOVCADMIN} | CONNECTION LIMIT connlimit | VALID BEGIN 'timestamp' | VALID UNTIL 'timestamp' | RESOURCE POOL 'respool' | USER GROUP 'groupuser' | PERM SPACE 'spacelimit' | TEMP SPACE 'tmpspacelimit' | SPILL SPACE 'spillspacelimit' | NODE GROUP logic_cluster_name | IN ROLE role_name [, ...] | IN GROUP role_name [, ...] | ROLE role_name [, ...] | ADMIN rol e_name [, ...] | USER role_name [, ...] | SYSID uid | DEFAULT TABLESPACE tablespace_name | PROFILE DEFAULT | PROFILE profile_name | PGUSER | AUTHINFO 'authinfo' | PASSWORD EXPIRATION period
  • 语法格式 修改角色的权限。 1 ALTER ROLE role_name [ [ WITH ] option [ ... ] ]; 其中权限项子句option为。 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 {CREATEDB | NOCREATEDB} | {CREATEROLE | NOCREATEROLE} | {INHERIT | NOINHERIT} | {AUDITADMIN | NOAUDITADMIN} | {SYSADMIN | NOSYSADMIN} | {USEFT | NOUSEFT} | {LOGIN | NOLOGIN} | {REPLICATION | NOREPLICATION} | {INDEPENDENT | NOINDEPENDENT} | {VCADMIN | NOVCADMIN} | CONNECTION LIMIT connlimit | [ ENCRYPTED | UNENCRYPTED ] PASSWORD 'password' | [ ENCRYPTED | UNENCRYPTED ] IDENTIFIED BY 'password' [ REPLACE 'old_password' ] | [ ENCRYPTED | UNENCRYPTED ] PASSWORD { 'password' | DISABLE } | [ ENCRYPTED | UNENCRYPTED ] IDENTIFIED BY { 'password' [ REPLACE 'old_password' ] | DISABLE } | VALID BEGIN 'timestamp' | VALID UNTIL 'timestamp' | RESOURCE POOL 'respool' | USER GROUP 'groupuser' | PERM SPACE 'spacelimit' | TEMP SPACE 'tmpspacelimit' | SPILL SPACE 'spillspacelimit' | NODE GROUP logic_cluster_name | ACCOUNT { LOCK | UNLOCK } | PGUSER | AUTHINFO 'authinfo' | PASSWORD EXPIRATION period 修改角色的名字。 1 2 ALTER ROLE role_name RENAME TO new_name; 设置角色的配置参数。 1 2 ALTER ROLE role_name [ IN DATABASE database_name ] SET configuration_parameter {{ TO | = } { value | DEFAULT } | FROM CURRENT}; 重置角色的配置参数。 1 2 ALTER ROLE role_name [ IN DATABASE database_name ] RESET {configuration_parameter|ALL};
  • 示例 创建示例角色r1,r2和r3。 1 2 3 CREATE ROLE r1 IDENTIFIED BY '{Password}'; CREATE ROLE r2 WITH LOGIN AUTHINFO 'ldapcn=r2,cn=user,dc=lework,dc=com' PASSWORD DISABLE; CREATE ROLE r3 WITH LOGIN PASSWORD '{Password}' PASSWORD EXPIRATION 30; 修改角色r1的登录权限: 1 ALTER ROLE r1 login; 修改角色r1的密码: 1 ALTER ROLE r1 IDENTIFIED BY '{new_Password}' REPLACE '{Password}'; 修改角色manager为系统管理员: 1 ALTER ROLE r1 SYSADMIN; 修改LDAP认证角色的fulluser信息: 1 ALTER ROLE r2 WITH LOGIN AUTHINFO 'ldapcn=role2,cn=user2,dc=func,dc=com' PASSWORD DISABLE; 修改角色的登录密码有效期为90天: 1 ALTER ROLE r3 PASSWORD EXPIRATION 90;
  • 语法格式 1 CREATE USER user_name [ [ WITH ] option [ ... ] ] [ ENCRYPTED | UNENCRYPTED ] { PASSWORD | IDENTIFIED BY } { 'password' | DISABLE }; 其中option子句用于设置权限及属性等信息。 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 {SYSADMIN | NOSYSADMIN} | {AUDITADMIN | NOAUDITADMIN} | {CREATEDB | NOCREATEDB} | {USEFT | NOUSEFT} | {CREATEROLE | NOCREATEROLE} | {INHERIT | NOINHERIT} | {LOGIN | NOLOGIN} | {REPLICATION | NOREPLICATION} | {INDEPENDENT | NOINDEPENDENT} | {VCADMIN | NOVCADMIN} | CONNECTION LIMIT connlimit | VALID BEGIN 'timestamp' | VALID UNTIL 'timestamp' | RESOURCE POOL 'respool' | USER GROUP 'groupuser' | PERM SPACE 'spacelimit' | TEMP SPACE 'tmpspacelimit' | SPILL SPACE 'spillspacelimit' | NODE GROUP logic_cluster_name | IN ROLE role_name [, ...] | IN GROUP role_name [, ...] | ROLE role_name [, ...] | ADMIN role_name [, ...] | USER role_name [, ...] | SYSID uid | DEFAULT TABLESPACE tablespace_name | PROFILE DEFAULT | PROFILE profile_name | PGUSER | AUTHINFO 'authinfo' | PASSWORD EXPIRATION period
  • 注意事项 通过CREATE USER创建的用户,默认具有LOGIN权限; 通过CREATE USER创建用户的同时系统会在执行该命令的数据库中,为该用户创建一个同名的SCHEMA;其他数据库中,则不自动创建同名的SCHEMA;用户可使用CREATE SCHEMA命令,分别在其他数据库中,为该用户创建同名SCHEMA。 系统管理员在普通用户同名schema下创建的对象,所有者为schema的同名用户(非系统管理员)。 除系统管理员之外,其他用户即使被授权了schema的所有权限也无法在普通用户的同名schema下创建对象,除非把同名schema相关的角色权限赋予其他用户。具体操作可参考“赋予用户schema的all权限后建表仍然报错”章节。 尽量避免所有业务使用同一个数据库用户运行,请按业务模块规划不同数据库用户。 不建议使用系统管理员用户跑业务,不同模块业务请通过多用户和权限进行访问控制。 更多开发设计规范参见总体开发设计规范。
  • 示例 创建示例用户u1: 1 2 DROP USER IF EXISTS u1 CASCADE; CREATE USER u1 PASSWORD '{Password}'; 修改用户u1的登录密码: 1 ALTER USER u1 IDENTIFIED BY '{new_Password}' REPLACE '{Password}'; 为用户u1追加CREATEROLE权限: 1 ALTER USER u1 CREATEROLE; 将与用户u1关联的会话参数enable_seqscan的值设置为on, 设置成功后,在下一会话中生效: 1 ALTER USER u1 SET enable_seqscan TO on; 重置u1的enable_seqscan参数: 1 ALTER USER u1 RESET enable_seqscan; 锁定u1账户: 1 ALTER USER u1 ACCOUNT LOCK;
  • 语法格式 修改用户的权限等信息。 1 ALTER USER user_name [ [ WITH ] option [ ... ] ]; 其中option子句为。 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 { CREATEDB | NOCREATEDB } | { CREATEROLE | NOCREATEROLE } | { INHERIT | NOINHERIT } | { AUDITADMIN | NOAUDITADMIN } | { SYSADMIN | NOSYSADMIN } | { USEFT | NOUSEFT } | { LOGIN | NOLOGIN } | { REPLICATION | NOREPLICATION } | {INDEPENDENT | NOINDEPENDENT} | {VCADMIN | NOVCADMIN} | CONNECTION LIMIT connlimit | [ ENCRYPTED | UNENCRYPTED ] PASSWORD { 'password' | DISABLE } | [ ENCRYPTED | UNENCRYPTED ] IDENTIFIED BY { 'password' [ REPLACE 'old_password' ] | DISABLE } | VALID BEGIN 'timestamp' | VALID UNTIL 'timestamp' | RESOURCE POOL 'respool' | USER GROUP 'groupuser' | PERM SPACE 'spacelimit' | TEMP SPACE 'tmpspacelimit' | SPILL SPACE 'spillspacelimit' | NODE GROUP logic_cluster_name | ACCOUNT { LOCK | UNLOCK } | PGUSER | AUTHINFO 'authinfo' | PASSWORD EXPIRATION period 修改用户名。 1 2 ALTER USER user_name RENAME TO new_name; 修改与用户关联的指定会话参数值。 1 2 ALTER USER user_name [ IN DATABASE database_name ] SET configuration_parameter { { TO | = } { value | DEFAULT } | FROM CURRENT }; 重置与用户关联的指定会话参数值。 1 2 ALTER USER user_name [ IN DATABASE database_name ] RESET { configuration_parameter | ALL };
  • 语法格式 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 [ WITH [ RECURSIVE ] with_query [, ...] ] INSERT [ IGNORE | OVERWRITE ] INTO table_name [ AS alias ] [ ( column_name [, ...] ) ] { DEFAULT VALUES | VALUES {( { expression | DEFAULT } [, ...] ) }[, ...] | query } [ ON DUPLICATE KEY duplicate_action | ON CONFLICT [ conflict_target ] conflict_action ] [ RETURNING {* | {output_expression [ [ AS ] output_name ] }[, ...]} ]; where duplicate_action can be: UPDATE { column_name = { expression | DEFAULT } | ( column_name [, ...] ) = ( { expression | DEFAULT } [, ...] ) } [, ...] and conflict_target can be one of: ( { index_column_name | ( index_expression ) } [ COLLATE collation ] [ opclass ] [, ...] ) [ WHERE index_predicate ] ON CONSTRAINT constraint_name and conflict_action is one of: DO NOTHING DO UPDATE SET { column_name = { expression | DEFAULT } | ( column_name [, ...] ) = ( { expression | DEFAULT } [, ...] ) } [, ...] [ WHERE condition ]
共100000条