[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
 

转载于:https://www.cnblogs.com/oDoraemon/p/5364271.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/288284.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

linux之systemctl设置自定义服务

1 问题 在linux系统上设置自定义服务,或者让我的服务开机就运行起来,比如我们就以tomcat服务为例子 /usr/local/tomcat/bin/startup.sh 启动tomcat的脚本/usr/local/tomcat/bin/shutdown.sh 关闭tomcat的脚本/usr/local/tomcat/bin/restart.sh 重启tomcat的脚本 2 解决方法 …

ASP.NET MVC入门(一)---MVC的Hello World

简单的MVC Hello world,着重处理Controller。 Step1 创建一个Asp.Net MVC 5项目打开Visual studio 2013 点“文件”->新建->项目。

for循环批量写文件 shell_shell脚本:for循环批量重命名带空格文件名的文件

今天在学习shell脚本攻略第二章2.13 批量重命名和移动时,由于我的文件命令有的文件名字中出现空格,出现了许多问题,因此将解决问题的过程记录了下来,希望能够和大家交流学习,共同进步,谢谢!问题代码问题代码最终成功代码最终代码步骤一思路: 由于在shell中运行此脚本时,发现将找…

HDU 4864 Task(贪心或高斯消元)

题意:n台机器工作时间为ai,等级bi,m个任务需要时间ai,等级bi,一台机器只能完成一个任务,完成一个任务收益为500*ai2*bi,求最大收益;(n,m>100000) 思路:先从大到小排时间,再从大到小排等级,借…

android模拟器无法拍照,为什么dafault相机无法在android模拟器中工作?

当我试图打开摄像头应用程序在模拟器defaultly给出,它意外停止和logcat的显示为什么dafault相机无法在android模拟器中工作?02-08 11:18:35.005: INFO/ActivityManager(83): Starting activity: Intent {act android.intent.action.MAIN cat[android.int…

nginx作为tcp代理 虚拟主机配置 模板

# tcp协议虚拟主机的配置文件模板 # cat /usr/local/nginx/conf/tcp/tcp.test.com.conf user nginx; worker_processes auto; worker_rlimit_nofile 102400;error_log /data0/log/tcp.test.com.error.log info;events {use epoll;worker_connections 25600; }http {includ…

(四)python3 只需3小时带你轻松入门—— 流程控制

缩进 python中使用缩进代表代码块;每一个块代表一个层次(分支),每个单独的分支是独立的,但是从整体逻辑上又是相融的;就像一本书一样,每个知识点是独立的,但是每个知识点组成了这本书…

ASP.NET Core 正确获取查询字符串参数

前言有网友在交流群中询问,如何获取查询字符串参数:默认情况下,ASP.NET Core 的模型绑定以键值对的形式从 HTTP 请求中的以下列表中指示的顺序扫描源并获取数据:表单域请求正文路由数据查询字符串参数上传的文件因此,不…

poj 1318

http://poj.org/problem?id1318 这个题目还是比较水的,不过也可以提升你对字符串的熟悉度以及对一些排序函数和字符函数的使用。 大概的题意就是给你一个字典,这个字典有一些单词,先对这些单词排好序,然后再给你一串字母&#xf…

C语言之#和##和__VA_ARGS__和##__VA_ARGS__

1、问题 看到代码宏里面很多##__VA_ARGS__不知道什么意思 2、直接写测试代码 #include <stdio.h>#define my_printf(x) printf(#x" is %d\n", x) #define my_printf1(x) printf("value is %d\n", x##x) #define my_printf2(...) printf(__VA_ARGS_…

ASP.NET MVC入门(二)---MVC数据传递

先来看一个简单的从Model到View传递数据的例子。 1、Model 在Models文件夹下新建一个类: using System; using System.Collections.Generic; using System.Linq; using System.Web;namespace Demo02_MVC数据传递.Models {public class Man{public string name { get; set; }p…

(三)python3 只需3小时带你轻松入门—— 变量的简单运算

变量运算 在编程时&#xff0c;需要对数据进行计算&#xff0c;计算的形式不限于&#xff1a;字符串拼接、相加减、相乘除及普遍的数学运算、剔除或指定剔除、添加或指定添加等。 在python中&#xff1a; *表示乘法/表示除法表示加法-表示减法 a,b10,11 cog3 j2 print(ca)#加…

安川伺服总线通讯方式_MⅢ总线特点 安川伺服选型与应用案例

MⅢ总线特点 安川伺服选型与应用案例的详细描述&#xff1a;MⅢ总线特点 安川伺服选型与应用案例降低系统成本在MECHATROLINK-Ⅲ中&#xff0c;可连接62个站点&#xff0c;从而大幅度降低系统的配线费用与时间。与过程控制、工厂自动化领域中的连接端子和电缆配套使用&#xff…

使用XMLConfiguration解析xml,properties等相应信息

org.apache.commons.configuration.XMLConfiguration; Apache Common-Configuration工具可以从Properties文件&#xff0c;XML文件,JNDI,JDBC数据源&#xff0c;System Properties,Applet parameters,Servlet Parameters等读取相应信息 使用步骤 前提&#xff0c;引入commons-c…

[家里蹲大学数学杂志]第405期中国科学院数学与系统科学研究院2015年夏令营分析与代数试题...

该试卷分两部分: 分析 $5$ 题 (共 $50$ 分), 代数 $5$ 题 (共 $50$ 分). 考试时间: $120$ 分钟 1. ($10$) 对哪些实数 $\al$, 级数 $\dps{\vsm{n}\sex{\frac{1}{n}-\sin \frac{1}{n}}^\al}$ 收敛? 2. ($6$) 设 $y$ 是 $[0,1]$ 上 $C^1$ 光滑实函数, 满足方程 $$\bex y(x)y(x)-…

html文本框整数范围,验证HTML表单文本框中的数值范围。 PHP或Javascript

重要的是要提的&#xff0c;你的$卷&#xff0c;$增益&#xff0c;$高音&#xff0c;$中&#xff0c;$低音永远实际上是空的&#xff0c;因为除了$ _POST值之外&#xff0c;你还为它们分配了一个字符串。另外&#xff0c;在尝试使用它们之前&#xff0c;您应该始终检查$ _POST值…

SVN之如何添加默认.a文件

1 问题 SVN之如何添加默认.a文件 2 解决办法 我们安装了tortoiseSVN&#xff0c;点击鼠标右键&#xff0c;然后点解Settings,然后点击按钮 “edit”,然后会打开一个conf文件 我们找到[auto-props]&#xff0c;然后在[auto-props]上面添加 global-ignores *.o *.lo *.la *.…

ASP.NET MVC入门---实例演示:通过ContentResult实现主题定制

实例演示:通过ContentResult实现主题定制 由于可以通过ContentResult的ContentType属性指定媒体类型,所以我们不仅仅可以利用它来返回最终会在浏览器中显示的文本,还可以返回其他一些类型的文本内容,比如JavaScript脚本(“text/javascript”)和CSS样式(“text/css”)等…

[ActionScript 3.0] 安全沙箱的类型sandboxType,判断当前程序是AIR还是web程序

表示其中正在运行执行调用的 文件的安全沙箱的类型。 Security.sandboxType 具有下列值之一&#xff1a; remote (Security.REMOTE)&#xff1a;此文件来自 Internet URL&#xff0c;并在基于域的沙箱规则下运行。localWithFile (Security.LOCAL_WITH_FILE)&#xff1a;此文件是…

C#语法糖系列 —— 第二篇:聊聊 ref,in 修饰符底层玩法

自从 C# 7.3 放开 ref 之后&#xff0c;这玩法就太花哨了&#xff0c;也让 C# 这门语言变得越来越多范式&#xff0c;越来越重&#xff0c;这篇我们就来聊聊 ref&#xff0c;本质上来说 ref 的放开就是把 C/C 指针的那一套又拿回来了&#xff0c;而且还封装成一套自己的玩法&am…