• [linux]unixODBC的安装配置说明


    什么是unixODBC:

    ODBC(Open Database Connect)是由Microsoft 公司于1991 年提出的一个开放的,用于访问数据库的统一接口规范。

    unixODBC的是为非Window平台的系统实现ODBC规范接口的中间件。

    unixODBC的安装

    有GUI的用户可以使用ODBCConfig tool 安装。教程在官网文档有详细介绍,不再赘述。地址:http://www.unixodbc.org/doc/UserManual/

     以下介绍没有GUI界面的安装说明,同样也是来自官方文档,地址:http://www.unixodbc.org/odbcinst.html

    我通过 apt-get install unixODBC 进行安装,安装完成后对odbcinst.ini和odbc.ini文件进行配置修改。

    自己编译或自己解压安装的需要自行摸索,安装完成后对odbcinst.ini和odbc.ini文件的修改是一致的。

     为了更清楚了解配置的过程,需要先了解一些背景信息:

    什么是ini文件:

    ODBC首次出现在Window 3.0中。当时Windows使用.ini文件去包含配置信息。

    ini文件的文本格式为:

    [section1]

    entry1 = value

    entry2 = value

    [section2]

    entry1 = value

    entry2 = value

    ...

    虽然后来Windows NT将这些ini文件替换成了注册表的形式,但是ODBC中用于访问这些配置信息的API仍然保持不变。

    unixODBC仍然保留了用ini存储配置信息的习惯。

    系统 vs 用户

    ODBC会区分两种类型的ini文件。

    系统ini文件能被所有用户访问,但是不能修改;用户ini文件则是针对特定用户的,并且能被该特定用户修改。

    ODBC的系统文件是odbcinst.ini和odbc.ini。用户文件是~/.odbc.ini(注意开头.号),并包含在各自用户的home目录下。

    系统文件odbcinst.ini包含对所有用户可访问的ODBC驱动信息;odbc.ini文件包含所有用户可访问的DSN信息。这些'系统DSN'对于如web服务器这样,不以真实用户身份运行的应用十分有用,因为这些程序不会有自己的home目录来存放.odbc.ini文件。

    举一个含ODBC支持的Apache和PHP的例子。当http server第一次启动时,它通过root调用SQLAllocEnv。然后它再切换到指定用户去调用SQLConnect。此时如果DSN不是一个系统DSN,就会出现fails。

    FILEDSN

    ODBC 3 还有第三种类型的DSN, file DSN。目前unixODBC还不支持FILEDSN。略。

    文件路径

    odbcinst.ini和odbc.ini文件默认放在/usr/local/etc下面。但由于现在能通过指定配置脚本的prefix来指定文件路径,所以如果在configure的时候指定的了prefix,则文件路径在{prefix}/etc下面

    文件内容

    odbcinst.ini

    以下是一个示例:

    [PostgreSQL]
    Description     = PostgreSQL driver for Linux & Win32
    Driver          = /usr/local/lib/libodbcpsql.so
    Setup           = /usr/local/lib/libodbcpsqlS.so
    FileUsage       = 1

    [PostgreSQL]是driver的名字,这里表明这是一个PostgreSQL driver。
    Driver 和Setup路径指出ODBC driver和setup libs 的位置。
    当我们使用ODBCConfig工具添加新的DSN时,会调用这个setup lib。但是由于现在我们是非GUI安装,所以其实可以不用管他。
    Driver路径最为关键。当DSN调用SQLConnect或SQLDriverConnect时,driver manager会动态载入这些库。若这里指定到了错误的Driver,则DSN无法工作。
    FileUsage由odbcinst 命令自己添加,所以如果你使用的是文本编辑器,则需要自己添加。
    Threads
    由于1.6版本之后添加了多线程支持,所以如果driver manager构建了多线程支持,则可以配置:

    [PostgreSQL]
    Description     = PostgreSQL driver for Linux & Win32
    Driver          = /usr/local/lib/libodbcpsql.so
    Setup           = /usr/local/lib/libodbcpsqlS.so
    Threading     = 2

    这项配置改变了默认的线程序列化等级(thread serialization level).

    [.]odbc.ini
    odbc.ini的内容要复杂一些,主要是因为不同的driver需要不同的配置项。
    最后列出了支持所有driver的配置项,以供参考。这些配置项可以通过odbcinst命令,或文本编辑器来添加。
    对应上面例子中的driver的配置项:

    [PostgreSQL]
    Description         = Test to Postgres
    Driver              = PostgreSQL
    Trace               = Yes
    TraceFile           = sql.log
    Database            = nick
    Servername          = localhost
    UserName            =
    Password            =
    Port                = 5432
    Protocol            = 6.4
    ReadOnly            = No
    RowVersioning       = No
    ShowSystemTables    = No
    ShowOidColumn       = No
    FakeOidIndex        = No
    ConnSettings        =

    Driver项用于匹配odbcinst.ini的[section]部分。不过也可以直接指向driver路径,只是可能需要注意路径访问权限的问题。

    其他数据库的配置项例子:

    Templates

    The templates for the included drivers are...

    Postgress

    
    
    [PostgreSQL]
    Description         = Test to Postgres
    Driver              = PostgreSQL
    Trace               = Yes
    TraceFile           = sql.log
    Database            = nick
    Servername          = localhost
    UserName            =
    Password            =
    Port                = 5432
    Protocol            = 6.4
    ReadOnly            = No
    RowVersioning       = No
    ShowSystemTables    = No
    ShowOidColumn       = No
    FakeOidIndex        = No
    ConnSettings        =
    
    
    

    Mini SQL

    
    
    [Mini SQL]
    Description     = MiniSQL
    Driver          = MiniSQL
    Trace           = No
    TraceFile       =
    Host            = localhost
    Database        =
    ConfigFile      =
    
    
    

    MySQL

    
    
    [MySQL-test]
    Description     = MySQL test database
    Trace       = Off
    TraceFile   = stderr
    Driver      = MySQL
    SERVER      = 192.168.1.26
    USER        = pharvey
    PASSWORD    =
    PORT        = 3306
    DATABASE    = test
    
    
    

    NNTP driver

    
    
    [nntp Data Source]
    Description     = nntp Driver
    Driver          = nntp Driver
    Trace           = No
    TraceFile       =
    Host            = localhost
    Database        =
    Port            =
    
    
    

    FreeTDS driver

    
    
    Driver = TDS
    Description = Northwind sample database
    Trace = No
    Server = 192.168.1.25
    Database = Northwind
    UID = sa
    
    
    

    Sybase SQL Anywhere 5.0

    Thanks Greg.
    [Sybase SQL Anywhere 5.0]
    Driver=Sybase SQL Anywhere 5.0
    Description=Sybase SQL Anywhere 5.0 ODBC Driver
    Userid=dba
    Password=sql
    DatabaseFile=sademo.db
     
  • 相关阅读:
    docker容器的时间同步
    Java中的各种bean对应的意义(VO,PO,BO,QO, DAO,POJO,DTO)
    Vue-admin工作整理(十九):从数字渐变组件谈第三方JS库Count-to的使用
    HTTP 方法:Get与Post分析
    Java核心知识盘点(三)- 框架篇-Spring
    Java核心知识盘点(二)- 缓存使用
    Java核心知识盘点(一)- 数据存储
    Java基础知识盘点(三)- 线程篇
    Java基础知识盘点(二)- 集合篇
    Java基础知识盘点(一)- 基础篇
  • 原文地址:https://www.cnblogs.com/oDoraemon/p/5364271.html
Copyright © 2020-2023  润新知