GeneXus 16知识库Preserve Table Casing不生效解决方法
根因说明
从历史版本迁移升级得到的GeneXus 16知识库,Preserve Table Casing属性存在两层配置优先级:对象级属性 > 版本偏好全局配置。
迁移过程中所有存量表对象会自动写入迁移时的默认值False作为对象级固定配置,优先级高于你后续在版本偏好里修改的全局True值,因此全局配置不会对已存在的表生效,生成的SQL依然会把表名转为全大写。
操作步骤
按以下顺序配置即可让生成语句保留表名的大小写混合格式:
- 确认全局默认配置
打开知识库版本偏好设置页,找到Preserve Table Casing属性,确认值设为True,该配置仅对配置完成后新建的表对象默认生效。 - 批量修正存量表的对象级属性
迁移生成的所有存量表不会自动继承全局配置更新,需要手动批量调整:- 在知识库导航器中通过对象筛选器过滤出所有
Table类型对象,执行全选 - 右键选中对象打开属性面板
- 在属性列表中找到
Preserve Table Casing项,将值统一修改为True
注意:筛选表对象时不要遗漏多对多关联自动生成的中间表、GAM权限相关系统表,这类非用户手动创建的表同样受对象级属性控制,漏改会导致部分表名依然为全大写。
- 在知识库导航器中通过对象筛选器过滤出所有
- 重新生成数据库脚本
配置完成后点击菜单栏Build > Rebuild All执行全量重编译,重新生成的DDL、SQL查询语句就会保留表名原始的大小写混合格式,不会自动转全大写。
排查补充
如果完成以上操作后依然输出全大写表名,检查当前使用的数据库生成器(如MySQL、PostgreSQL、SQL Server等)的专属配置,部分生成器提供独立的Case Sensitive Object Names属性,需要同步设置为True才会完全生效。
内容的提问来源于stack exchange,提问作者ealmeida
相关产品推荐
相关产品推荐

