南大通用GBase 8s数据库(gbase database) 在同一套数据库引擎之上,内置了三种 SQL 兼容模式。三种模式并非三套数据库,而是 同一套实例的三种语法面孔。不同应用通过不同模式接入,即可使用各自熟悉的 SQL 。
dbaccess 命令行客户端
方式一:SQL 语句切换(会话级)
进入 dbaccess 后,执行以下SQL语句即可切换当前会话的兼容模式,该方式仅影响当前会话,适合临时验证、SQL 兼容性测试等场景。
-- 切换到 GBASE 原生模式set environment sqlmode 'gbase';-- 切换到 MySQL 兼容模式set environment sqlmode 'mysql';-- 切换到 Oracle 兼容模式set environment sqlmode 'oracle';
方式二:环境变量切换(全局)
在启动 dbaccess 前,通过环境变量指定默认模式,客户端启动后即进入对应兼容模式,无需每次手动执行 set environment 命令。
# GBASE 原生模式export GBASE_DBACCESS_RUN_MODE=gbase# MySQL 兼容模式export GBASE_DBACCESS_RUN_MODE=mysql# Oracle 兼容模式export GBASE_DBACCESS_RUN_MODE=oracle
应用连接(以 JDBC 为例)
在应用层,通过 JDBC 连接串中的参数 sqlmode 指定兼容模式,应用层即可实现"无痛迁移"。
URL 示例:
// GBASE 原生模式jdbc:gbasedbt-sqli://host:port/dbname:GBASEDBTSERVER=servername;sqlmode=gbase// MySQL 兼容模式jdbc:gbasedbt-sqli://host:port/dbname:GBASEDBTSERVER=servername;sqlmode=mysql// Oracle 兼容模式jdbc:gbasedbt-sqli://host:port/dbname:GBASEDBTSERVER=servername;sqlmode=oracle
❌ 误区一:模式切换全局生效
set environment sqlmode 仅作用于当前会话。如需全局生效,必须在应用连接串统一指定。
❌ 误区二:三种模式可以混用
同一应用内部应固定一种模式。gbase模式下建的存储过程,在 oracle 模式下执行有报错的可能性。不同应用可以连不同模式,但同一应用不要来回切换。
❌ 误区三:切了模式就实现零改动
兼容模式覆盖了绝大多数日常开发场景,但不代表源数据库的每一个特性、每一个系统包、每一种特殊写法都能原封不动搬过来。正式迁移前建议先用核心业务流程做一轮兼容性验证,做到心中有数。
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/69979120/viewspace-3180817/ ,如需转载,请注明出处,否则将追究法律责任。