我的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文件中指定了?
答案 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之间的选项