我按照此处给出的注册驱动程序和数据源的说明进行操作:"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/