GBase 8s数据库的boolean类型取值为：'t','f',null。其它数据库可接受对应的1,0,null的数值写法。为了兼容使用，可临时自定义转换及等值及不等值操作函数的方式实现兼容。[...]
错误消息说明GCI错误码均为正数小于900000的错误代码表明是GCI侧运行时产生的报错信息。大于900000的错误码表明是Server报错信息，需减900000后结合Server错误码查看。Server错误码不区分正负值，取绝对值即可。[...]
GBase 8s 数据库错误代码基于数据库版本：GBase 8s v8.8 3.6.3_3x2_1calsErrCodeDescription-23101Unable to load locale categories.-23102Memory allocation failed during locale processing.-23103Code-set conversion function failed due to illegal sequence or invalid value.-23104Error opening required code-set conversion object file.-23105The current database engine does not support code-set conversion.-23106Invalid argument for the code-set conversion initializing function.-23107DBLANG and CLIENT_LOCALE environment variables are incompatible.-23108An error occurred during locale structure creation.-23109Invalid locale specification.-23110An error occurred during environment variable processing.-23111Internal error. Illegal argument for locale initialization.-23112Place holder for invalid GCV argument.-23113Place holder for unknown GCV error.-23114Place holder for GCV truncation.-23115Code sets of the locale categories are not the same.-23190Multibyte database name is not allowed in this system.-23194Code-set conversion restore failed.-23195Reset locale failed. Connection refused.-23196Unknown locale in selected database.-23197Database locale information mismatch.-23198GL_COLLATE information is missing from the system catalogs.-23199GL_CTYPE information is missing from the system catalogs.-23100An Error has occurred during locale structure creation.[...]
测试环境操作系统：Ubuntu 22.04.3 LTS （x86_64)数据库版本：GBase 8s v8.8_3.6.3_3x2_1Python3版本：Python 3.10.12 （系统自带）gbase8s-sqlalchemy版本：2.0.1 (https://pypi.org/project/gbase8s-sqlalchemy)gbase8sdb版本：0.2.2 (https://pypi.org/project/gbase8sdb)SQLAlchemy版本：2.0.42 (~=2.0)[...]
干支纪年可通过年份计算得来（东汉以后）drop function if exists getY2TGDZ(int); create function getY2TGDZ(p_year int) returns varchar(20) with (not variant); define v_tg int; define v_dz int; -- 天干：mod(年份,10），前移3 let v_tg = mod(p_year,10)+7; if v_tg > 10 then let v_tg = v_tg - 10; end if; -- 地支：mod(年份,12)，前移3 let v_dz = mod(p_year,12)+9; if v_dz > 12 then let v_dz = v_dz - 12; end if; return substr('甲乙丙丁戊己庚辛壬癸',v_tg,1) || substr('子丑寅卯辰巳午未申酉戌亥',v_dz,1); end function;示例：select getY2TGDZ(2025) as tz from dual;结果：tz 乙巳
从mysql迁移库，存在非聚集列不在group by 的语句。这样的sql会被认为是不合法的sql，因为：1，order by后面的列必须是在select后面存在的2，select、having或order by后面存在的非聚合列必须全部在group by中存在通用情况下，mysql可以通过以下三种方式解决报错问题1，修改sql使其遵守only_full_group_by规则2，关闭only_full_group_by规则3，降级数据库版本在5.7以下[...]
注：对非gbasedbt或者root用户 注：仅是大致过程 1，访问系统库sysuser的表sysintauthuser。 如果用户名不匹配username，则认为不是内部用户，转使用操作系统验证；如果匹配username，则继续2。 2，访问系统库sysuser的表sysusermap。 如果用户名不匹配username，刚使用默认用户（default user的properties）；如果匹配username，则获取surrogate_id。继续3。 3，访问系统库sysuser的表syssurrogates。 如果surrogate_id不匹配，则报错退出； 如果匹配，则获取os_username。继续4。 4，与加载到内存中的allowed.surrogates对比。 如果不匹配，报警告，转使用操作系统验证；如果匹配，完成检验。
GBase 8s内部用户与操作系统用户验证关系
分为两个场景先有操作系统用户1，未创建同名的内部用户用户验证使用操作系统检验。2，使用默认方式创建同名内部用户将自动与同名操作系统用户绑定代理映射，用户检验时先从内部校验，但找不到代理映射用户（online.log中会的警告），而后将使用操作系统检验。 注：这种情况下，修改allowed.surrogates增加同名代理映射用户，并重新加载到内存。此时，内部用户检验通过，将使用内部检验。3，创建同名内部用户时指定有效的代理映射用户用户检验使用内部检验先有内部用户（代理映射正常）1，未创建同名的操作系统用户用户校验使用内部检验2，创建同名的操作系统用户用户校验使用内部检验
本文基于GBase 8s V8.8 3.6.2_2版本编写, 是对原文档：https://gbasedbt.com/index.php/archives/459/ 的更新。 常用的数据类型如下： GBase 8s数据库数据类型参考：https://gbasedbt.com/index.php/archives/628/1, 字符类型内置字符类型包括：char, nchar, varchar, nvarchar, lvarchar, varchar2, nvarchar2和clob2 CHARACTER(n) 和 CHARACTER VARYING(n)这样的别名同样支持 启用SQLMODE=Oralce，即Oracle兼容模式[...]
TRANSLATE() 语法这里是 GBase 8s TRANSLATE() 函数的语法：TRANSLATE(string, from_string, to_string)参数string 必需的。 要翻译的字符串。from_set 必需的。 一个字符串，它是要翻译的字符的集合。to_set 必需的。 一个字符串，它是要翻译成的字符集合。 to_set 中的字符和 from_set 中的字符一一对应形成翻译关系。[...]