unixODBC配置文件
记录kingbase数据库操作过程中记录的问题
sqlconnect连接数据库时,抛错Data source name not found and no default driver specified,程序在此之前切换到kingbase用户再连接数据库。
这里能确认是配置问题,但需要进行手动验证。
查看配置文件
odbcinst -j
查看odbcinst.ini文件
driver配置正常
关于dsn
odbc的dsn可以配置系统dsn和用户dsn,系统dsn是上面odbcinst -j查询到的信息,上图中路径是/etc/odbc.ini,一般用户的dsn在/home/username/.odbc.ini,root用户的dsn的配置文件在/root/.odbc.ini,没有指定ODBCINI这个环境变量时,一般使用用户下的dsn。
此时查看自行配置的odbc.ini文件。
然后通过isql -v [dsn] 进行验证,如图,说明odbc和数据库都正常。
由此可见,手动执行一切正常,说明环境可用,在鉴于抛错在代码中抛出,所以写一个测试程序去连接,事实证明可以连接,数据库的接口正常,此时分析自己的代码问题,在进行数据库连接前切换用户,切换后的进程环境有问题导致找不到用户的.odbc.ini
查找资料可以知道,可以配置ODBCSYSINI和ODBCINI来指定odbc加载路径。
在/etc/profile文件中,
export ODBCSYSINI=/etc
export ODBCINI=/etc/odbc.ini
加入上面两句话后,odbc查找dsn在系统dsn配置文件中查找,即/etc/odbc.ini
所以这里要确保/etc/odbc.ini中也有配置好的dsn。
后续,在程序中加入这个环境变量后,Data source name not found and no default driver specified问题解决。