GaussDB 200不同用户查同表数据不同,实际只是不同schema下的同名表

举报
华为GaussDB 发表于 2019/07/22 09:18:10 2019/07/22
【摘要】 作者(Author)* 王帆 00312086 适用操作系统(Applicable OS)* SuSE Linux11 适用版本(Applicable Version)* GaussDB 200所有版本 适用产品线(Applicable Product Line)* 所有集成gaussDB 200的产品 更新记录(Chang...

背景及现象描述(Background and Symptom)*

发现个别表的数据分布不均匀,结合表中数据特征重新选择了分布键。具体思路是先按新分布键建表,再把旧表的数据charu新表,最后删除旧表,并写成了sql脚本。但是在实际执行脚本时,发现2个不同用户pgdba,user01登陆相同的数据库sdbss,查询同一张表table0时,数据竟然不一致。2个用户分别执行的查询语句如下:select count(*) from table0。

原因分析(Cause Analysis)*

2个用户登陆的相同的数据库,查询了相同名称的表,查询结果却不一致。首先需要判断同名的表是否真的是同一张表。在关系型数据库中,确定一张表通常需要3个因素:database,schmema,table,这里的database,table已经明确了,分别是sdbss、table0,那么就要检查schema。分别使用2个用户登陆发现,search_path都是"$user",public,而pgdba作为集群管理员,默认是不会创建pgdba同名的schema的,所以不指定schema的情况下所有表都会建在public下,而对于普通用户如user01,则会在创建用户时,默认创建同名的schema,在不指定schema时下表都会创建在user01的schema下。结合现场同事发回的脚本,最终确定是在对表进行操作时2个用户之间的交错导致了同名不同表的情况。

解决办法(Solution)*

在操作表时加上schema引用,格式:schema.table。

建议与总结(Suggestion and Summary)

在数据库的使用中养成schema.table引用表的好习惯。

 

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。