达梦数据库

创建日期:2024-06-21
更新日期:2024-12-18

相关资料

官网:https://www.dameng.com/

下载:https://eco.dameng.com/download/

数据库管理系统DM8:https://eco.dameng.com/info/products/dm8

在线服务平台:https://eco.dameng.com/

技术文档:https://eco.dameng.com/document/dm/zh-cn/start/index.html

应用开发指南:https://eco.dameng.com/document/dm/zh-cn/app-dev/

社区问答:https://eco.dameng.com/community/question/

达梦仓库:https://central.sonatype.com/search?q=com.dameng

注册服务:注册服务 ~| 达梦技术文档 (dameng.com)

启动、停止数据库:启动、停止数据库 ~| 达梦技术文档 (dameng.com)

使用教程

CentOS安装达梦数据库

客户端

DM管理工具

常用命令

1、创建表。(可以重复执行)

DECLARE
  num NUMBER;
BEGIN
  SELECT COUNT(1) INTO num from user_tab_columns where table_name = upper('GIS_ASSETS_CONFIG');
  IF num = 0 THEN
    EXECUTE IMMEDIATE 'CREATE TABLE GIS_ASSETS_CONFIG
    (
      ID          NUMBER(20,0) NOT NULL PRIMARY KEY,
      TENANT_ID   VARCHAR2(12),
      DEPT_ID     NUMBER(20,0),
      DEPT_CODE   VARCHAR2(100),
      DEPT_NAME   VARCHAR2(45),
      MATERIAL    VARCHAR2(100),
      DIAMETER    VARCHAR2(100),
      PRICE       NUMBER(12,7),
      CREATE_USER NUMBER(20,0),
      UPDATE_USER NUMBER(20,0),
      CREATE_TIME DATE,
      UPDATE_TIME DATE,
      IS_DELETED  NUMBER DEFAULT 0
    )';
    EXECUTE IMMEDIATE 'COMMENT ON TABLE GIS_ASSETS_CONFIG IS ''资产报表配置''';
    EXECUTE IMMEDIATE 'COMMENT ON COLUMN GIS_ASSETS_CONFIG.ID IS ''主键''';
    EXECUTE IMMEDIATE 'COMMENT ON COLUMN GIS_ASSETS_CONFIG.TENANT_ID IS ''租户ID''';
    EXECUTE IMMEDIATE 'COMMENT ON COLUMN GIS_ASSETS_CONFIG.DEPT_ID IS ''机构ID''';
    EXECUTE IMMEDIATE 'COMMENT ON COLUMN GIS_ASSETS_CONFIG.DEPT_CODE IS ''机构编码''';
    EXECUTE IMMEDIATE 'COMMENT ON COLUMN GIS_ASSETS_CONFIG.DEPT_NAME IS ''机构名称''';
    EXECUTE IMMEDIATE 'COMMENT ON COLUMN GIS_ASSETS_CONFIG.MATERIAL IS ''材质''';
    EXECUTE IMMEDIATE 'COMMENT ON COLUMN GIS_ASSETS_CONFIG.DIAMETER IS ''管径''';
    EXECUTE IMMEDIATE 'COMMENT ON COLUMN GIS_ASSETS_CONFIG.PRICE IS ''价格''';
    EXECUTE IMMEDIATE 'COMMENT ON COLUMN GIS_ASSETS_CONFIG.CREATE_USER IS ''创建用户''';
    EXECUTE IMMEDIATE 'COMMENT ON COLUMN GIS_ASSETS_CONFIG.UPDATE_USER IS ''更新用户''';
    EXECUTE IMMEDIATE 'COMMENT ON COLUMN GIS_ASSETS_CONFIG.CREATE_TIME IS ''创建时间''';
    EXECUTE IMMEDIATE 'COMMENT ON COLUMN GIS_ASSETS_CONFIG.UPDATE_TIME IS ''更新时间''';
    EXECUTE IMMEDIATE 'COMMENT ON COLUMN GIS_ASSETS_CONFIG.IS_DELETED IS ''是否删除''';
  END IF;
END;

2、给数据表添加字段。(可以重复执行)

DECLARE
  num NUMBER;
BEGIN
  SELECT COUNT(1) INTO num from user_tab_columns where table_name = upper('GIS_LAYER_DATA') and column_name = upper('DISPLAY_FIELD');
  IF num = 0 THEN
    execute immediate 'ALTER TABLE HYLAB_BUSINESS.GIS_LAYER_DATA ADD (DISPLAY_FIELD VARCHAR2(255))'; 
    execute immediate 'COMMENT ON COLUMN HYLAB_BUSINESS.GIS_LAYER_DATA.DISPLAY_FIELD IS ''展示字段''';
  execute immediate 'UPDATE HYLAB_BUSINESS.GIS_LAYER_DATA SET DISPLAY_FIELD = '''''; 
  END IF;
END;

示例程序

Java连接达梦数据库示例

常见问题

1、TEXT或CLOB类型字段存超长文本Java驱动获取数据报错:index out of range。

不同版本的Dm8JdbcDriver会报不同的错误,改驱动版本为8.1.2.141即可。

<ol class="list-group list-group-numbered">
<li class="list-group-item border-0">1.1.193:正常</li>
<li class="list-group-item border-0">1.2.79:index out of range</li>
<li class="list-group-item border-0">1.2.141:正常</li>
<li class="list-group-item border-0">1.2.192:网络通信异常,Cannot assign requested address: connect</li>
<li class="list-group-item border-0">1.3.62:无效的模式名[HYLAB_BUSINESS]</li>
</ol>

<!-- https://mvnrepository.com/artifact/com.dameng/DmJdbcDriver18 -->
<dependency>
    <groupId>com.dameng</groupId>
    <artifactId>DmJdbcDriver18</artifactId>
    <version>8.1.2.141</version>
</dependency>

2、启动微服务报错:dm.jdbc.driver.DMException: 第1 行附近出现错误,无效的模式名[INFORMATION_SCHEMA]。

在项目中添加包:DmDialect-for-hibernate5.4,然后修改spring.jpa.database-platform为org.hibernate.dialect.DmDialect即可。

<!-- https://central.sonatype.com/artifact/com.dameng/DmDialect-for-hibernate5.4 -->
<dependency>
    <groupId>com.dameng</groupId>
    <artifactId>DmDialect-for-hibernate5.4</artifactId>
    <version>8.1.3.62</version>
</dependency>

spring:
  jpa:
    database-platform: org.hibernate.dialect.DmDialect

3、错误号: -2106,无效的表或视图名[V$HUGE_TABLESPACE_PATH]。

4、DM管理工具无法记住密码。

点击对象导航右侧工具栏上的注册连接,填写主机名、端口、用户名、口令,一定要勾选 保存口令 和 添加到连接组,点击确定即可。

5、在data文件夹中没有DAMENG文件夹。

使用以下命令创建达梦实例。

./dminit PATH=/dm/data/  PAGE_SIZE=32 EXTENT_SIZE=32 CASE_SENSITIVE=N CHARSET=0 LENGTH_IN_CHAR=Y DB_NAME=DAMENG LOG_SIZE=2048 INSTANCE_NAME=DMSERVER PORT_NUM=5236