Package Exports
- dmdb
- dmdb/index.js
This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (dmdb) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.
Readme
dmdb
此包为Node.js连接达梦8数据库的原生驱动,API详见安装目录下的《DM8程序员手册》
仅支持Node.js 12 及以上
Extensions
- 支持 typeorm 框架,详情见 typeorm-dm
- 支持 knex 框架,详情见 knex-dm
Change Logs
dmdb v1.0.43524(2025-11-14)
- *执行结果中的绑出参数
Result.outBinds/Results.outBinds的返回格式原先固定为数组,现改为由绑定参数格式控制。若绑定参数按照位置绑定,则绑出参数格式为数组;若绑定参数按照名称绑定,则绑出参数格式为对象。 - *新增驱动全局配置
dmdb.outBindFormat,可控制上述特性,建议老版本驱动升级到此新版本时,设置dmdb.outBindFormat = dmdb.OUT_FORMAT_ARRAY以保证特性与原来一致(即绑出参数格式固定为数组),以免引起兼容性问题,配置说明详见index.d.ts文件 - 按照位置绑定参数时,若绑定参数个数大于实际所需要的参数个数,则报错:绑定参数个数过多
- NaN/Infinity/-Infinity绑定参数时,策略由绑入NULL值改为报错无效的数值
dmdb v1.0.40189(2025-08-20)
- 与数据库服务器的内部通信协议版本从v10升级到v21
- 支持服务器连接心跳
- 连接串参数rwSeparate类型从boolean调整为number
- 连接串参数epSelector取值范围和策略调整
dmdb v1.0.38220(2025-07-02)
- 修复用服务名连接时的空指针报错问题
- 修复开启读写分离时,连接池连接关闭所导致的读写分离功能失效问题
- 整型number参数绑定默认类型从DOUBLE改为BIGINT
dmdb v1.0.36002(2025-05-12)
- 与数据库服务器的内部通信协议版本从v8升级到v10
- 修复服务器ini参数NUMBER_MODE=1时,DECIMAL类型的列插入错误的问题
dmdb v1.0.34946(2025-04-07)
- 第三方依赖包snappy改为可选,安装和使用驱动时不再强制要求安装snappy依赖。若数据库服务器和数据库驱动通信开启了snappy压缩,则要求必须安装snappy依赖
- snappy依赖现提供两种选择:snappy 和 snappyjs
- snappy 性能好,兼容性差,大多数情况下优先考虑snappy
- snappyjs 纯JavaScript实现的库,兼容性好,国产CPU和操作系统建议用snappyjs
- 优化自动提交配置策略,优先级顺序从高到低如下:
- 执行选项
ExecuteOptions.autoCommit/ExecuteManyOptions.autoCommit - 驱动全局配置
dmdb.autoCommit - 连接串属性/连接属性
localhost:5236?autoCommit=true/ConnectionAttributes.autoCommit
- 执行选项
- 修复一些绑出参数问题
- 连接串参数switchInterval默认值从1000改为200
dmdb v1.0.33801(2025-02-26)
- 因影响typeorm-dm,回滚v1.0.31017部分修改,不再支持通过执行选项
ExecuteOptions.outFormat设置执行结果中的绑出参数Result.outBinds的返回格式为数组或对象,绑出参数固定为数组
dmdb v1.0.32369(2025-02-11)
- *修复了日期时间类型在不同时区下转换错误的问题
- 修复了查询小于公元100年的年份数值错误的问题
- 连接串参数localTimezone的取值范围从-720
720调整为-779840
dmdb v1.0.31017(2024-12-09)
- 修复了游标类型的绑出参数始终为null的问题,游标类型的绑出参数会根据执行选项
ExecuteOptions.resultSet返回ResultSet对象或所有数据行 - 支持通过执行选项
ExecuteOptions.outFormat设置执行结果中的绑出参数Result.outBinds的返回格式为数组或对象
dmdb v1.0.30381(2024-11-14)
- 查询结果集中,JSON或JSONB类型的数据,自动解析成JSON对象返回(需服务器执行码也支持区分JSON/JSONB和CLOB),该特性控制开关见index.d.ts文件中的
- parseJson: boolean
dmdb v1.0.24984(2024-04-30)
- 新增以流的方式读取结果集,详情查看index.d.ts文件中的API:
- Connection.queryStream(sql: string, bindParams: BindParameters, options: ExecuteOptions): Readable
- ResultSet.toQueryStream(): Readable
dmdb v1.0.19862(2023-09-18)
- 修复了以服务名方式连接数据库时,因设置了错误的通信协议版本号导致解析服务器返回的消息Buffer失败的问题
dmdb v1.0.18856(2023-08-18)
- 修复了连接串属性schema在连接池中失效的问题
- 修复了连接池加服务名方式连接数据库导致的资源泄露问题
- 新增连接串参数: language。指定客户端语言,将报错信息按照指定语言返回,目前支持简体中文,英文和繁体中文。详情查看index.d.ts文件中ConnectionAttributes.language
dmdb v1.0.17128(2023-05-06)
- 新增连接串参数: injectArray。绑定参数为数组时,是否直接注入到SQL语句中,非数组类型的参数不受影响。详情查看index.d.ts文件中ConnectionAttributes.injectArray
- 支持在连接串上直接配置动态服务名,使用示例:dm://user:password@GroupName?GroupName=(host1:port1,host2:port2,...)
dmdb v1.0.15238(2023-02-02)
- *从数据库中查询BIGINT列,结果集中该列数据的类型从js的bigint类型修改为了js的number类型 注:如果数据库中该列的值超过js number的安全范围,即-(2^53 - 1) 到 2^53 - 1,则不能保证数据正确性!可以参考dm.fetchAsString和dm.ExecuteOptions.fetchInfo将数值转为字符串来解决
- *修复了字符大字段(CLOB/TEXT)中存在乱码字符时,读取结果不正确的问题
- *修复了连接串属性doSwitch=1时,(服务名中的)连接不会自动切换和自动重连的问题
- 与数据库服务器的内部通信协议版本从v2升级到v8
- 修复了在极低概率下(约1/65536),因加解密逻辑的缺陷,创建连接时报错:[-2501] 用户名或密码错误
- 修复了Node.js v14中关闭数据库连接后,Socket占用内存无法被回收的问题
dmdb v1.0.14280(2022-11-24)
- 修复了Node.js v16及以上版本使用驱动时出现的意外报错:[-4058] ENOENT
dmdb v1.0.13216(2022-10-09)
- *第三方依赖snappy从v6升级到v7以支持ARM平台安装和使用驱动
- 修复了当语句或参数长度超过64K字节导致的Buffer写入越界的问题
dmdb v1.0.11090(2022-06-08)
- *连接池新增等待队列功能。当连接池中连接数达到上限,后续的
getConnection()获取连接请求可以被加入到等待队列中,直到连接池内有可用连接,而不是像原来那样直接报错。相关配置参数如下:- queueRequests:连接池达到最大连接数后,后续获取连接请求是否进入等待队列,默认true
- queueMax:获取连接请求等待队列最大长度,-1表示无限制,默认500
- queueTimeout:进入等待队列的获取连接请求在等待多少毫秒后,认为请求失败,单位毫秒,0表示永久等待,默认60000
dmdb v1.0.10728(2022-04-18)
- *从数据库中查询NUMBER/NUMERIC列,结果集中该列数据的类型从js的string类型修改为了js的number类型 注:如果数据库中该列的值超过js number的安全范围,即-(2^53 - 1) 到 2^53 - 1,则不能保证数据正确性!可以参考dm.fetchAsString和dm.ExecuteOptions.fetchInfo将数值转为字符串来解决
- *修复了在获取连接池连接时,当连接已失效且池中连接数小于poolMin阈值时,连接没有自动重连的问题
- 修复了存储过程绑入boolean类型的参数到其他数据类型导致执行失败的问题
dmdb v1.0.7697 (2021-08-23)
- *缓存Buffer改进,对于批量执行的大数据量操作有极大的性能提升,建议老版本驱动更新到此版本
- 对数据库集群的连接做了一些优化处理和功能新增
- 日期时间的返回格式更精确
- 支持更多连接串属性,详情查看index.d.ts文件中的API