为提高效率,提问时请提供以下信息,问题描述清晰可优先响应。
【DM版本】:DM Database Server 64 V8
【操作系统】:银河麒麟
【CPU】:amd64, arm64
【问题描述】*:
目前测试了3个版本的数据库具体版本分别为:
(1) windows平台 0x7000b 1-1-126-20.09.04-126608-ENT
(2) linux平台 0x7000a 2-1-3-20.06.24-123627-SEC
(3) linux平台 0x7000b 2-1-156-20.12.07-131-23-SEC SPE
项目使用的是hibernate-4.3.11
达梦的驱动是DmJdbcDriver18.jar
方言是DmDialect-for-hibernate4.0.jar
初始化参数是大小写不敏感,长度按字符,其他默认
现象是在(1)环境下初始化后可以正常使用;
(2)环境安装初始化后,每次启动项目,hibernate在映射表的时候,都会提示 “Table not found: xxxx” (实际上表xxxx是存在的)然后会去尝试创建表,创建的时候会失败 ,提示"第1 行附近出现错误: 对象[xxxx]已存在",但不影响后续对数据库中表的增删改查操作。在修改了dm.ini文件中的 "SEC_PRI_MODE"参数,改成"0"就可以正常映射,不会判断表不存在了;
在(3)的环境中dm.ini文件中没有这个参数,添加上(2)中出现的问题也依然存在,目前没有找到解决方案。
这种情况造成的影响是就是无法通过自动映射的方式实现对表的修改。
我看有人提过hibernate映射无法实现修改表(https://eco.dameng.com/community/question/9bb78cd3c653968ff451337eb58af133),他通过更换环境解决的,不知道是不是和我发现的现象一样
部分日志(只截取了一个表的内容):
数据库表结构:
hibernate的配置:
映射文件:
请问这个问题现在有解决方案了吗?
从目前您的反馈来看,看不出具体问题原因,我们需要更多的信息来协助您排查问题。
您反馈的客户的内网环境,有问题和没问题的环境有什么不同的地方么?
另外我提一个建议:
从这个图上看出,业务系统直接配置使用SYSDBA用户访问数据库下WEBOS的模式(可能有用户WEBOS,也可能只有WEBOS模式,这个需要看具体设置),在特殊环境下这种方式会存在问题,在高安全版本的数据库中,用户隔离,不允许跨用户访问,即使SYSDBA也不可以访问普通用户的数据。
建议在达梦数据库中创建WEBOS用户,合理规划用户权限共业务系统使用。
你好,数据库中的表名和hibernate映射的表名是否大小写都一致,可以把具体的报错信息和对应的配置发出来看看吗