在创建表或者其他数据库对象的时候可能会报出"语法分析错误",这种情况可能是由于创建对象的名称使用了数据库系统所保留的关键字,针对这种情况达梦提供了两种解决方法来屏蔽关键字。
1、修改数据库dm.ini中的参数EXCLUDE_RESERVED_WORDS
2、配置客户端dm_svc.conf文件,添加KEYWORDS配置项(推荐
参数EXCLUDE_RESERVED_WORDS:该参数为静态参数,默认为空,值为需要去除的保留字列表,保留字之间以逗号分隔开。
确认关键字信息:
select * from v$reserved_words where keyword in ('PERCENT','ORDER');
由RES_FIXED可以判断关键字是否可以EXCLUDE,Y 不可以,N 可以
如上图查询,其中PERCENT为可排除关键字,ORDER为不可排除关键字
对于RES_FIXED=Y的保留字,修改dm.ini中EXCLUDE_RESERVED_WORDS参数是无法屏蔽的,对RES_FIXED=N的保留字可以屏蔽。
第二种方法在配置dm_svc_conf文件。不同安装环境配置文件存放地方不同:
32 位的 DM 安装在 Win32 操作平台下,此文件位于%SystemRoot%system32
64 位的 DM 安装在 Win64 操作平台下,此文件位于%SystemRoot%system32
32 位的 DM 安装在 Win64 操作平台下,此文件位于%SystemRoot%SysWOW64
在 Linux 平台下,此文件位于/etc 目录
通过KEYWORDS添加需要屏蔽的关键字信息,具体dm_svc.conf配置如下:
# 全局配置区
TIME_ZONE=(480)
LANGUAGE=(cn)
DB1=(192.168.15.35:5236)
[DB1]
# 服务配置区
KEYWORDS=(PERCENT,ORDER)
通过测试可以发现对于RES_FIXED=Y的保留字,dm_svc.conf也可以进行屏蔽,但是屏蔽之后可能会导致使用上的问题。
以ORDER为例:
通过dm_svc.conf屏蔽后,使用dm_svc.conf进行连接的程序,将无法使用数据库中自带的包含单独的order单词的函数等,将会导致程序功能异常。比如order by;
注意: 通过dm_svc.conf对保留字进行屏蔽,只影响通过dm_svc.conf进行连接的应用程序,不使用dm_svc.conf不会影响。
文章
阅读量
获赞