1

我按照此处提供的注册驱动程序和数据源的说明进行操作:“从二进制 Tarball 发行版安装连接器/ODBC”

在意识到我必须在运行时使用 sudomyodbc-installer之后,我可以成功地让我安装的驱动程序显示为已注册,其中:

shell> myodbc-installer -d -l
MySQL ODBC 8.0 Driver

当您myodbc-installer不带参数运行时,它会列出命令行开关并告诉您如何注册数据源。它给出的例子是:

Add a new system data source name for Unicode driver              
shell> myodbc-installer -s -a -c2 -n "test" \                  
           -t "DRIVER=MySQL ODBC 8.0 Unicode Driver;SERVER=localhost;DATABASE=test;UID=myid;PWD=mypwd"

这与名称不完全匹配(它是MySQL ODBC 8.0 Driver,不是MySQL ODBC 8.0 Unicode Driver......ASCII驱动程序只是MySQL ODBC 8.0

但是使用适当的驱动程序名称,我设法让安装程序成功注册了一个数据源,它可以被列出:

shell> myodbc-installer -s -l
test                  - MySQL ODBC 8.0 Driver

但是我尝试使用此 DSN 的程序无法正常工作。所以我想我会寻找一些更简单的案例来尝试。该iodbctest程序似乎是一个不错的候选者,因为它具有您点击的功能?并列出了数据源。但是我什么都没有...

shell> iodbctest
iODBC Demonstration program
This program shows an interactive SQL processor
Driver Manager: 03.52.0812.0326

Enter ODBC connect string (? shows list): ?

DSN                              | Driver                                  
------------------------------------------------------------------------------

Enter ODBC connect string (? shows list):

由于sudo帮助安装过程,我想我会尝试sudo iodbctest,但这并没有帮助。

4

1 回答 1

0

所以我想我会寻找一些更简单的案例来尝试。iodbctest 程序似乎是一个不错的选择,因为它有一个你点击的功能?它列出了数据源。

不要混合安装 iodbc 和 unixodbc。iodbc 不是 ODBC 的一组抽象工具和测试,它是一个完全独立于 unixodbc 的 ODBC 实现。

就我而言,我首先安装了 unixodbc。这就是myodbc-installer要求通过共享库函数注册驱动程序和数据源的原因。但它以与所写内容不匹配的方式编写 .INI 文件iodbc

恰当的例子:iodbctest客户端似乎没有动态链接以使用您系统上的任何 ODBC 提供程序。它静态链接到 iodbc 例程,这些例程在文件中显式查找节odbc.ini[ODBC Data Sources]。该索引似乎不是由 unixodbc 注册过程自动生成的。

(注意:这可能是 unixodbc 或 mysql-installer 使用它的一个错误,因为文档说[ODBC Data Sources]每个 odbc.ini 中都维护一个部分,odbcinst 库可能使用也可能不使用。”)

有趣的是,虽然 mysql-installer 告诉您如何使用它来注册数据源,但 MySQL 网站上的不同建议告诉您手动编辑 INI 文件。这与unixodbc 所说的相矛盾,即“注意:odbc.ini 和 odbcinst.ini 被视为 ODBC 系统信息。对此系统信息的所有访问(读取或写入)都应通过驱动程序管理器或 ODBCINST 共享库进行。做不要直接访问这些 INI 文件!” (强调他们的)

除了无法获取索引的问题之外,即使您确实连接到 Linux 上的数据源,iODBC 使用wchar_t而不是SQLWCHAR. 因此,使用 unicode 驱动程序,您将从查询中得到一堆乱码。

于 2019-10-10T03:06:04.453 回答