mysql - myodbc-installer 列出了数据源,但 iodbctest 未显示 DSN

标签 mysql unixodbc iodbc

我按照此处给出的注册驱动程序和数据源的说明进行操作:"Installing Connector/ODBC from a Binary Tarball Distribution"

意识到我必须 use sudo when running myodbc-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 program似乎是一个不错的候选者,因为它有一个功能,您可以点击 ? 并列出数据源。但我什么也没得到...

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,但这没有帮助。

最佳答案

So I thought I would look for some simpler case to try. The iodbctest program seemed like a good candidate, as it has a function where you hit ? and it lists the data sources.

不要混合安装 iodbc 和 unixodbc。 iodbc 不是 ODBC 的一组抽象工具和测试,它是 completely independent implementation of ODBC from unixodbc.

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

举个例子:iodbctest 客户端似乎没有动态链接以使用系统上的任何 ODBC 提供程序。它静态链接到 iodbc 例程 look explicitly in the odbc.ini file for an [ODBC Data Sources] section 。该索引似乎不是由 unixodbc 注册过程自动创建的。

(注意:这可能是 unixodbc 或 mysql-installer 使用它时的错误,如 the documentation says “每个 odbc 中都维护 [ODBC 数据源] 部分。 ini 中,odbcinst 库可能使用也可能不使用。")

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

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

关于mysql - myodbc-installer 列出了数据源,但 iodbctest 未显示 DSN,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58314640/

相关文章:

sql-server - PDO_ODBC和unixODBC无法使用非默认端口连接MSSQL

mysql - 从两个没有关系的表返回相似和不同行的查询

MySQL ORDER BY 另一个表的列名

php - 将 .csv 数据加载到生产服务器时出现问题

sql-server - Ruby 连接到 SQL Server

mysql - 无法使用 unixodbc、libmyodbc 连接到远程 mysql 服务器

php - 无法使用 php 和 odbc 连接到 HyperFileSQL

ruby-on-rails - OSX 和 Rails 2.3.x 上的 unixodbc 和 freetds 设置

mysql - SQL 计算一段时间内的累计值