我正在运行 MariaDB Galera 集群,并尝试从第一个节点上的 MariaDB 内部访问 MSSQL。我以前在 SLES 12 SP2 上做过这件事,这次我尝试在 RHEL 7.3 上做同样的事情。
不幸的是,当尝试将 MSSQL 表映射到现有(但为空)数据库时,MariaDB 提示“未知存储引擎‘连接’”。我有点困惑,因为引擎存在并且已加载。所有必需的包/库都已安装并放置在文件系统中。
错误
MariaDB (database)> create table test123 ENGINE=connect table_type=ODBC tabname='123' Connection='Driver=123;Description=test;Server=someserver;Instance=someinstance;Port=1433;Database=TEST;PWD=SECRET;UID=some_user';
ERROR 1286 (42000): Unknown storage engine 'CONNECT'
运行命令“show engines;”和“show plugins;”时,我可以看到 CONNECT 引擎和插件 ha_connect.so 已加载。
当从命令行使用“isql”时,我可以成功连接到 MSSQL。因此 odbcinst.ini 和 odbc.ini 设置正确。
我尝试过
我查阅了几个关于如何通过 ODBC 从 MariaDB 访问 MSSQL 的教程,但没有发现我遗漏或做错的地方。我还比较了旧设置 (SLES) 和新设置 (RHEL),但没有发现任何相关差异。
我还在“创建表...”期间跟踪了 MariaDB,但它只说:
57079 access("./database/test123.frm", F_OK) = -1 ENOENT (No such file or directory)
57079 sendto(119, ")\0\0\1\377\6\5#42000Unknown storage engine 'CONNECT'", 45, MSG_DONTWAIT, NULL, 0) = 45
抱歉,我在这里混淆了一些东西,但不幸的是,由于我连接到相关服务器的方式的性质,我无法从 CLI 复制粘贴。
我的环境
- RHEL 7.3
- MariaDB 10.2.9
- MariaDB 连接引擎 10.2.9
- unixODBC-utf16 2.3.1,msodbcsql 13.1.0
我需要什么帮助
- 理解 MariaDB 为何声称存储引擎“CONNECT”不存在
- 通过成功将 MSSQL 表映射到 MariaDB 解决了此问题
答案1
别担心。经过几个小时的研究,我发现一个博客声称 msodbc 驱动程序与此特定的 MariaDB-connect-engine 版本不兼容。不幸的是,我没有将相关博客加入书签 :(
然而,在 SLES 12 上我使用了略有不同的版本,并且它开箱即用。