数据仓库服务 GAUSSDB(DWS)-GaussDB(DWS)查询时结果不一致的常见场景和解决方法:数据库兼容模式

时间:2024-06-21 18:00:23

数据库兼容模式

场景:在数据库中查询空串结果不一致。

database1(TD兼容模式):

1
2
3
4
5
td=# select '' is null;
 isnull 
--------
 f
(1 row)

database2(ORA兼容模式):

1
2
3
4
5
ora=# select '' is null;
 isnull 
--------
 t
(1 row)

原因分析:

查询空串结果不同是由于不同数据库兼容模式下空串与null语法有差异导致。

目前, GaussDB (DWS)支持三种数据库兼容模式:Oracle、TD和MySql,不同兼容模式下语法和行为存在差异,兼容性差异说明可参考Oracle、Teradata和MySQL语法兼容性差异

不同兼容模式下的database表现出不同的兼容性行为属于正常现象。可以通过查看select datname, datcompatibility from pg_database;确认数据库兼容性设置是否相同。

解决方法:

这种场景下只能将两个database的兼容性模式设置为一致的才能解决。Database的DBCOMPATIBILITY属性不支持ALTER,只能通过新建数据库的方法,在创建数据库时指定相同的DBCOMPATIBILITY属性解决。

support.huaweicloud.com/dws_faq/dws_03_2107.html