客户有一个odbc的安装文件,默认是安装在/opt下的,odbc.ini,odbcinst.ini也都在opt下配置,安装完成后,执行isql 命令会找不到数据库DSN,用odbcinst -j查看结果是:
unixODBC 2.3.0
DRIVERS............: /opt/unixODBC/etc/odbcinst.ini
SYSTEM DATA SOURCES: /opt/unixODBC/etc/odbc.ini
FILE DATA SOURCES..: /opt/unixODBC/etc/ODBCDataSources
USER DATA SOURCES..: /opt/unixODBC/etc/odbc.ini
SQLULEN Size.......: 4
SQLLEN Size........: 4
SQLSETPOSIROW Size.: 2将/opt/unixODBC文件夹都拷贝到 /usr/local下后,执行isql 命令能够连接数据库,但C程序的SQLConnect一直都是连接失败,提示
[unixODBC][Driver Manager]Data source name not found, and no default driver specified (0)
设置了环境变量
export ODBCSYSINI=/opt/unixODBC/etc
export ODBCINI=/opt/unixODBC/etc/odbc.ini
都还是不行,将ini文件拷贝到/home下,/usr/loca/etc下都不行;
但如果安装系统的odbc,默认ini文件是在/etc下,C程序都是正常的。
求高手帮忙看看,谢谢!!!

解决方案 »

  1.   

    用odbcinst -j查看结果是:
    unixODBC 2.3.0
    DRIVERS............: /usr/local/unixODBC/etc/odbcinst.ini
    SYSTEM DATA SOURCES: /usr/local/unixODBC/etc/odbc.ini
    FILE DATA SOURCES..: /usr/local/unixODBC/etc/ODBCDataSources
    USER DATA SOURCES..: /usr/local/unixODBC/etc/odbc.ini
    SQLULEN Size.......: 4
    SQLLEN Size........: 4
    SQLSETPOSIROW Size.: 2设置环境变量后路径为/opt/unixODBC
      

  2.   

    一般情况配置文件默认是在/etc  下的,这样启动时好搜索路径!
      

  3.   

    我知道阿,但是这个版本的ODBC默认是安装在/opt下的 
      

  4.   

    找到原因了,编译选项要加 -lodbcinst