使用unixodbc驱动程序连接到mysql,默认数据库无法正常工作

时间:2011-06-16 07:32:44

标签: mysql odbc unixodbc

我的unixodbc odbc.ini配置文件如下:

[test]
Driver = /usr/local/lib/libmyodbc5-5.1.8.so
Description = Connector/ODBC 5.1.8 Driver DSN
SERVER = 127.0.0.1
PORT = 3306
USER = root
Password =
DATABASE = test
OPTION =
SOCKET =

问题是它不会使用上面指定的数据库,即'test'。

我要做的是手动执行直接sql以更改为数据库并运行我的查询:

SQLExecDirect(stmt, "USE test", SQL_NTS);
SQLExecDirect(stmt, "SELECT * FROM mytable", SQL_NTS);

关于如何摆脱'USE测试'这是一个mysql命令的任何想法。 为什么unixodbc没有将'test'设置为默认数据库,因为它已经在conf文件中指定了?

2 个答案:

答案 0 :(得分:1)

在Windows上,驱动程序管理器(在本例中为unixODBC)仅作用于Driver标记,DSN中的所有其他条目由驱动程序解释。它没有注意到有一个database = entry并且通过魔法知道在这个驱动程序中它应该执行“USE”命令,并且另一个调用SQLSetConnectAttr(SQL_ATTR_CURRENT_CATALOG)。

在我的MySQL驱动程序副本上,它肯定使用了database = entry。但是,我会检查1.您正在使用的驱动程序副本是使用unixODBC lib来访问共享配置文件(libodbcinst.so),还是驱动程序正在直接读取它,并且正在读取相同的ini文件作为unixODBC。可能会检查strace以查看驱动程序加载后打开的ini。也许尝试将ODBCINI = / path /设置为/ your / odbc.ini

答案 1 :(得分:1)

[test]
Driver = /usr/local/lib/libmyodbc5-5.1.8.so
Description = Connector/ODBC 5.1.8 Driver DSN
SERVER = 127.0.0.1
PORT = 3306
USER = root
Password =
**DATABASE** = test
**OPTION** = **3**
**SOCKET** =

并且可以更改1,2之间的选项