我正在尝试为两个不同的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连接到其中一个。
可能是什么原因?我该如何进一步解决此问题?
非常感谢。
答案 0 :(得分:0)
为了使可以通过ODBC访问dockerized的MariaDB,容器本身必须安装unixODBC以及MariaDB ODBC驱动程序和数据源文件。