You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Node.js odbc 2.4.6连接UnixODBC触发Segmentation fault求助

解决Node.js使用odbc包连接Tibero6时的段错误问题

第一步:修正odbcinst.ini的配置错误

你的odbcinst.ini存在语法错误,Setup = 1之后的File是无效配置项,会导致驱动加载异常进而引发段错误。修正后的配置如下:

[Tibero_driver]
Description = Tibero6 ODBC driver
Driver = /home/tibero/client/libtbodbc.so
Setup = /home/tibero/client/libtbodbc.so
UsageCount = 1

第二步:配置系统库路径环境变量

确保Tibero客户端的库目录被加入系统库加载路径,避免驱动依赖缺失:

export LD_LIBRARY_PATH=/home/tibero/client:$LD_LIBRARY_PATH
# 如需永久生效,可将上述命令添加至~/.bashrc或/etc/profile文件中

第三步:简化连接参数格式

尝试直接使用字符串形式的连接参数,避免包的对象参数解析逻辑引发问题:

const odbc = require('odbc');
const connectionString = "DSN=Tibero6";

odbc.connect(connectionString, (error, connection) => {
  if (error) {
    console.error('连接失败:', error);
    return;
  }
  console.log('连接成功:', connection);
});

第四步:从源码重新编译odbc包

预编译的odbc二进制包可能与你的系统unixODBC版本不兼容,手动编译安装适配本地环境的版本:

# 先卸载现有包
npm uninstall odbc
# 从源码编译安装
npm install odbc --build-from-source

第五步:分析ODBC追踪日志

查看/tmp/odbc.log的详细日志,定位连接过程中的具体错误:

cat /tmp/odbc.log | grep -i error

日志会包含驱动加载、连接建立阶段的异常细节,帮助进一步排查问题。

第六步:验证架构兼容性

确保Tibero驱动、unixODBC和Node.js的架构完全一致(均为64位或32位):

# 检查Node.js架构
node -p process.arch
# 检查Tibero驱动架构
file /home/tibero/client/libtbodbc.so
# 检查unixODBC架构
file /usr/lib/x86_64-linux-gnu/libodbc.so

若架构不匹配,需更换对应版本的驱动或Node.js。


内容的提问来源于stack exchange,提问作者worawut jantarice

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.06 02:45:32