unixODBC驱动程序管理器“实际上没有找到数据源名称”-MariaDB

时间:2019-01-05 11:52:22

标签: mariadb unixodbc

我正在尝试为两个不同的MariaDB实例设置OBDC接口,我完全被一个事实起作用而另一个却不起作用的事实所迷惑。

在3306上的CentOS7上的常规MariaDB安装上运行一个数据库(“平台”),而在同一OS上的Docker容器内的另一个Maria数据库实例中,另一个数据库(“ tlex”)在端口3301上运行。我必须将这两个实例分开。

两个数据库都可以从命令行访问:

mysql -u mrtlex -pPASSWORD -h 127.0.0.1 -P3306 tlex

mysql -u platan -pPASSWORD -h 127.0.0.1 -P3301 platan

让我顺利连接。

我在odbcinst.ini中定义了MariaDB驱动程序:

[MariaDB]
Description = MariaDB Connector/ODBC v.3.0
Driver64 = /usr/local/lib64/libmaodbc.so

我在odbc.ini中定义了两个数据源:

[tlex]
Description         = TLex dockerized
Driver              = MariaDB 
Database            = tlex
Server              = 127.0.0.1
Uid                 = mrtlex
Password            = PASSWORD
Port                = 3301

[platan]
Description         = MariaDB localdb
Driver              = MariaDB
Database            = platan
Server              = 127.0.0.1
Uid                 = platan
Password            = PASSWORD
Port                = 3306

odcbinst似乎可以识别两个数据源:

[root@CentOS-73-64-minimal ~]# odbcinst -q -s
[tlex]
[platan]

但是我实际上只能连接到platan而不是tlex数据源:

[root@CentOS-73-64-minimal ~]# iusql -v tlex
[unixODBC][Driver Manager]Data source name not found, and no default driver specified
[ISQL]ERROR: Could not SQLDriverConnect
[root@CentOS-73-64-minimal ~]# iusql -v platan
+---------------------------------------+
| Connected!                            |
|                                       |
| sql-statement                         |
| help [tablename]                      |
| quit                                  |
|                                       |
+---------------------------------------+
SQL> 

这对我来说毫无意义。我可以从命令行访问两个数据库,两个数据库的设置方式都与ODBC数据源相同,两个数据源都用odbcinst -q -s列出,但我只能通过ODBC连接到其中一个。

可能是什么原因?我该如何进一步解决此问题?

非常感谢。

1 个答案:

答案 0 :(得分:0)

为了使可以通过ODBC访问dockerized的MariaDB,容器本身必须安装unixODBC以及MariaDB ODBC驱动程序和数据源文件。