分类: Mysql/postgreSQL
2008-05-12 15:14:38
本参考适用于MyODBC 3.51。对于相应的版本,你可以找到旧的二进制版或源码版MyODBC手册。
这是关于MySQL ODBC驱动程序的参考手册,而不是通用ODBC参考。关于ODBC的更多信息,请参阅。
对于本参考的应用程序开发部分,假定用户在C语言方面有着良好的实践知识,对DBMS有一般了解,最后,还应熟悉MySQL。关于MySQL功能及其语法的更多信息,请参阅http://dev.mysql.com/doc/。
如果你的问题未能在本文档中得到解答,请发送电子邮件至。
关于ODBC的更多信息,请参阅。
关于MyODBC的更多信息,请访问。
关于许可的更多信息,请访问。
· Windows 95, 98, Me, NT, 2000, XP和2003
· 所有Unix操作系统
o AIX
o Amiga
o BSDI
o DEC
o FreeBSD
o HP-UX 10, 11
o Linux
o Mac OS X Server
o Mac OS X
o NetBSD
o OpenBSD
o OS/2
o SGI Irix
o Solaris
o SunOS
o SCO OpenServer
o SCO UnixWare
o Tru64 Unix
对于特定平台,如果无法下载二进制版本,可通过下载驱动程序源码自行创建驱动程序。你也可以为MySQL贡献二进制代码,方式是发送邮件至,这样其他用户就能使用你贡献的内容。
关于订阅MySQL邮件列表或浏览列表档案的更多信息,请访问。
其中,关注程度最高的是论坛MySQL连接器部分的ODBC论坛。
如果遇到与MyODBC有关的困难或问题,首先应使用ODBC管理器和MyODBC生成一份日志文件(请求来自ODBC ADMIN的日志时获得的日志文件)。关于完成该步骤的方式,请参见26.1.9.7节,“获取ODBC跟踪文件”。
检查MyODBC跟踪文件,找出可能出错的地方。通过在myodbc.log文件中搜索字符串“>mysql_real_query”,可确定已执行的语句。
此外,你还应尝试从mysql客户端程序或admndemo执行语句。这样,就能帮助你确定错误的出处,MyODBC或MySQL。
如果你发现了不正确的事项,请将相关行(最多40行)发送给MyODBC邮件列表。请参见1.7.1.1节,“MySQL邮件列表”。请勿发送整个MyODBC或ODBC日志文件!
如果你无法找出错误之所在,最后的选择是,以tar或zip格式创建包含MyODBC跟踪文件、ODBC日志文件和README文件(阐明问题)的档案。你可以将该档案文件发送至。只有位于MySQL AB的我们才能访问你上传的文件,而且我们会十分谨慎地对待这类数据。
如果你创建了仍出现问题的程序,请将该程序也包含在档案文件中。
如果程序能够与某些其他SQL服务器一起工作,档案中还应包含在这类其他SQL服务器下工作的ODBC日志文件。
请记住,你提供给我们的信息越多,我们更正问题的机会就越大。
开放式数据库连接性(ODBC)是广泛接受的用于数据库访问的应用程序编程接口(API)。它基于针对数据库API的CLI(调用层接口)规范(来自X/Open和ISO/IEC),并采用了结构化查询语言(SQL)作为其数据库访问语言。
在26.1.16节,“MyODBC API引用”中,概要介绍了MyODBC支持的ODBC功能。关于ODBC的更多信息,请参阅。
· 应用程序:
应用程序指的是通过调用ODBC API来访问MySQL服务器上数据的程序。应用程序使用标准的ODBC调用与驱动管理器进行通信。应用程序不关心数据的存储位置,存储方式,甚至不关心为访问数据而进行的系统配置方式。它仅需要知道数据源名(DSN)。
对于所有的应用程序,无论它们使用OBDC的方式是什么,很多任务是共同的。这些任务包括:
o 选择MySQL服务器,并与之连接。
o 提交将要执行的SQL语句。
o 检索结果(如果有的话)。
o 处理错误。
o 提交或回滚包含SQL语句的事务。
o 断开与MySQL服务器的连接。
由于大多数数据访问工作是使用SQL完成,对于使用OBDC的应用程序来说,其主要任务是提交SQL语句,并检索由这些语句生成的结果。
· 驱动管理器:
驱动管理器是用于管理应用程序和驱动程序间通信的库。它负责执行下述任务:
o 解析数据源名(DSN)。
o 加载和卸载驱动程序。
o 处理ODBC调用,或将其传递给驱动程序。
· MyODBC驱动程序:
MyODBC驱动程序是用于实施ODBC API所提供功能的库。它负责处理ODBC函数调用,将SQL请求提交给MySQL服务器,并将结果返回给应用程序。如有必要,驱动程序会更改应用程序的请求,以便该请求符合MySQL支持的语法。
· ODBC.INI:
ODBC.INI是ODBC配置文件,其中保存了连接到服务器所需的驱动信息和数据库信息。驱动管理器将使用它来确定加载哪个驱动程序(使用数据源名)。驱动程序将根据指定的DSN使用它来读取连接参数。更多信息,请参见26.1.9节,“MyODBC配置”。
· MySQL服务器:
MySQL服务器是数据源。MySQL是:
o 一种数据库管理系统(DBMS)
o 一种关联数据库管理系统(RDBMS)
o 开放源码软件
· 解析数据源名(DSN)。
· 加载和卸载驱动程序。
· 处理ODBC函数调用,或将其传递给驱动程序。
下面给出了一些常用的驱动程序:
· Microsoft Windows ODBC驱动管理器(odbc32.dll),
· unixODBC Unix驱动管理器(libodbc.so),。
· iODBC ODBC Unix驱动管理器(libiodbc.so),。
从2.1.2版开始,UnixODBC也提供MyODBC 3.51。
注释: 从本节起,我们将这两类驱动程序统称为MyODBC。但当存在差异时,我们将使用它们的本名。
MyODBC能够工作在Windows 9x, Me, NT, 2000, XP和2003,以及大多数Unix平台上。
MyODBC是开放源码软件。你可以在网站http://dev.mysql.com/downloads/connector/odbc/上找到它的最新版本。请注意,2.50.x版采用的是LGPL许可,而3.51.x版采用的是GPL许可。
如果使用MyODBC时出现了问题,而且你的程序还能与OLEDB一起工作,应尝试使用OLEDB驱动程序。
正常情况下,在Windows机器上仅需安装MyODBC。仅当你拥有运行在Unix机器上的程序(如ColdFusion),而且该程序将使用ODBC来访问数据库时,才需安装用于Unix的MyODBC。
如果你打算在Unix机器上安装MyODBC,还需要1个ODBC管理器。MyODBC能够与大多数Unix ODBC管理器一起工作。
· 要想使用ODBC应用程序(不支持MySQL的应用程序),建立从Windows平台到Unix平台的连接,首先必须在Windows机器上安装MyODBC。
· 用户和Windows机器必须具有访问位于Unix机器上的MySQL服务器的权限。这可通过GRANT命令设置。请参见13.5.1.3节,“GRANT和REVOKE语法”。
· 必须创建ODBC DSN条目,方式如下:
1. 打开Windows机器上的控制面板。
2. 双击ODBC数据源32位图标。
3. 点击选项卡“用户DSN”。
4. 点击“添加”按钮。
5. 在“创建新数据源”屏幕上选择MySQL,并点击“完成”按钮。
6. 显示MySQL驱动程序的默认配置屏幕。请参见26.1.9.2节,“在Windows上配置MyODBC DSN”。
· 启动应用程序,并使用在ODBC管理器中指定的DSN选择ODBC驱动程序。
注意,在MySQL屏幕上还显示了其他选项,如果遇到问题,可尝试这些选项(如跟踪、连接时不提示等)。
在Windows平台上,安装较旧的MyODBC 2.50驱动时,可能会遇到下述错误:
拷贝C:\WINDOWS\SYSTEM\MFC30.DLL时出现错误。
重启Windows,并再次安装(在运行任何使用ODBC的应用程序之前)。
问题在于其他程序正使用ODBC。由于Windows的设计方式,在这种情况下,你可能无法使用Microsoft的ODBC设置程序安装新的ODBC驱动。在大多数情况下,可以通过连续按“忽略”键拷贝剩余的MyODBC文件,最终安装应仍能工作。如不然,解决方案是在“安全模式”下重新启动计算机。在重启的过程中,在机器启动Windows前按F8,选择“安全模式”,安装MyODBC,然后在正常模式下重新启动计算机。
要想使用RPM分发版在Linux平台上安装或升级MyODBC,可简单地下载最新MyODBC的RPM分发版,并按照下面介绍的方式操作。使用su root成为根用户,然后安装RPM文件。
如果是首次安装:
shell> su root
shell> rpm -ivh MyODBC-3.51.01.i386-1.rpm
如果驱动程序已存在,可按照下述方式升级它:
shell> su root
shell> rpm -Uvh MyODBC-3.51.01.i386-1.rpm
如果存在关于MySQL客户端库libmysqlclient的任何依存错误,可使用“-nodeps”选项简单地忽略它,然后确保MySQL客户端共享库位于路径中或通过LD_LIBRARY_PATH进行了设置。
这样,就会将驱动程序库和相关文件分别安装到/usr/local/lib和/usr/share/doc/MyODBC目录下。请转至26.1.9.3节,“在Unix平台上配置MyODBC DSN”。
要想卸载驱动程序,请首先成为根用户,然后执行rpm命令:
shell> su root
shell> rpm -e MyODBC
要想从tarball分发版(.tar.gz文件)安装驱动程序,请下载针对你所使用操作系统的最新版驱动程序,然后按照下述步骤操作:
shell> su root
shell> gunzip MyODBC-3.51.01-i686-pc-linux.tar.gz
shell> tar xvf MyODBC-3.51.01-i686-pc-linux.tar
shell> cd MyODBC-3.51.01-i686-pc-linux
请阅读INSTALL-BINARY文件中的安装说明,并执行下述命令:
shell> cp libmyodbc* /usr/local/lib
shell> cp odbc.ini /usr/local/etc
shell> export ODBCINI=/usr/local/etc/odbc.ini
然后,请跳至26.1.9.3节,“在Unix平台上配置MyODBC DSN”为MyODBC配置DSN。更多信息,请参见与发布版一起提供的INSTALL-BINARY文件。
· MDAC, Microsoft Data Access SDK:。
· MySQL客户端库以及MySQL 4.0.0或更高版本的包含文件。(最好是MySQL 4.0.16或更高版本)。应满足上述要求,这是因为MyODBC需要用到该版本以上的库才提供的新调用和结构。要想获得客户端库和包含文件,请访问http://dev.mysql.com/downloads/。
要想创建驱动程序,请采取下述步骤:
1. 下载并将源码展开到文件夹,然后将位置切换到该文件夹。在下述命令中,假定文件夹为myodbc3-src:
2. C:\> cd myodbc3-src
3. 编辑Makefile,为MySQL客户端库和头文件指定正确的路径。然后使用下述命令创建并安装发布版。
4. C:\> nmake -f Makefile
5. C:\> nmake -f Makefile install
nmake -f Makefile用于创建驱动程序的发布版并将二进制码放入名为Release的子目录下。
nmake -f Makefile install用于将驱动程序DLL和库(myodbc3.dll, myodbc3.lib)安装(拷贝)到系统目录下。
6. 要想创建调试版,请使用Makefile_Debug而不是Makefile,如下所示:
7. C:\> nmake -f Makefile_debug
8. C:\> nmake -f Makefile_debug install
9. 使用下述命令,可清除并重新创建驱动程序:
10. C:\> nmake -f Makefile clean
11. C:\> nmake -f Makefile install
注释:
· 确保在Makefiles中指定了正确的MySQL客户端库和头文件路径(设置MYSQL_LIB_PATH和MYSQL_INCLUDE_PATH变量)。默认的头文件路径是C:\mysql\include。对于发布版DLL,默认的库路径是C:\mysql\lib\opt,对于调试版,默认路径是C:\mysql\lib\debug。
· 关于nmake的完整用法,请参见。
· 如果你正在使用BitKeeper树来进行编译,所有的针对Windows的Makefiles均将被命名为Win_Makefile*。
C:\> cd samples
C:\> nmake -f Makefile all
· MySQL客户端库以及MySQL 4.0.0或更高版本的包含文件。(最好是MySQL 4.0.16或更高版本)。应满足上述要求,这是因为MyODBC需要用到该版本以上的库才提供的新调用和结构。要想获得客户端库和包含文件,请访问http://dev.mysql.com/downloads/。
· 必须使用“--enable-thread-safe-client”选项配置MySQL库。Libmysqlclient是作为共享库安装的。
· 必须安装下述Unix ODBC驱动管理器之一:
o iodbc 3.0或更高版本()
o unixodbc Alpha 3或更高版本()
· 如果使用了未编译在MySQL客户端库中的字符集(默认字符集为: latin1 big5 czech euc_kr gb2312 gbk sjis tis620 ujis),就需要从字符集目录下将mysql字符定义安装到SHAREDIR中(默认情况下位于/usr/local/mysql/share/mysql/charsets)。如果在相同机器上安装了MySQL,它们应位于恰当位置。
一旦完成了所有所需文件的安装,将源码文件解包到单独目录下,并按照下面给出的说明进行操作。
shell> ./configure --help
下面介绍了一些常用的“configure”选项。
1. 要想编译MyODBC,须使用“--with-mysql-path=DIR”选项来提供MySQL客户端库文件和包含文件路径,其中,“DIR”是MySQL的安装目录。
可通过运行“DIR/bin/mysql_config”来确定MySQL编译选项。
2. 为ODBC驱动管理器(iodbc或unixobc)提供标准的头文件和库文件路径。
· 如果你正在使用iodbc,而且iodbc未安装在其默认位置(/usr/local),可能需要使用“--with-iodbc=DIR”选项,其中,“DIR”是iodbc的安装目录。
如果iodbc头文件未位于DIR/include目录下,可使用“--with-iodbc-includes=INCDIR”选项指定它们的位置。
上面所述也适用于库文件。如果库文件未位于DIR/lib目录下,可使用“--with-iodbc-libs=LIBDIR”选项。
· 如果你正在使用unixODBC,可使用“--with-unixODBC=DIR”选项(区分大小写),让configure寻找unixODBC而不是默认的iodbc,其中,“DIR”是unixODBC的安装目录。
如果unixODBC头文件和库文件未位于目录DIR/include和DIR/lib下,可使用“--with-unixODBC-includes=INCDIR”和“--with-unixODBC-libs=LIBDIR”选项。
3. 或许你也希望指定不同于“/usr/local”的安装前缀。例如,要想将MyODBC驱动安装到“/usr/local/odbc/lib”目录下,可使用“--prefix=/usr/local/odbc”选项。
最终的配置命令应与下面给出的相似:
shell> ./configure --prefix=/usr/local \
--with-iodbc=/usr/local \
--with-mysql-path=/usr/local/mysql
--enable-thread-safe
也可以使用下述选项禁止它:
--disable-thread-safe
使用该选项,能够通过mysql线程安全客户端库libmysqlclient_r.so(扩展名与操作系统有关)的链接,创建驱动程序线程安全库libmyodbc3_r.so。
在配置线程安全选项时,如果出现了配置错误,应检查config.log,检查错误是否是因系统中缺少线程库而导致的,如果是,使用LIBS选项提供一个,即
LIBS="-lpthread" ./configure ..
可以使用下述选项启用或禁止共享和静态选项:
--enable-shared[=yes/no] --disable-shared --enable-static[=yes/no] --disable-static
默认情况下,驱动程序是使用“--without-docs”创建的。如果希望在正常创建过程中观察文档信息,可使用下述选项进行配置:
--with-docs
shell> make
如果出现错误,更正后,继续执行创建进程。如果无法创建,请发送详细的电子邮件至,以获取进一步帮助。
在大多数平台上,默认情况下,MySQL不会创建或支持“.so”(共享)客户端库,这是因为,创建共享库在过去造成过很多问题。
在这种情况下,你可以下载MySQL分发版,并使用以下选项进行配置:
--without-server --enable-shared
要想创建共享驱动程序库,必须为“configure”指定“--enable-shared”选项。默认情况下,“configure”不启用该选项。
如果使用“--disable-shared”选项进行了配置操作,可使用下述命令,从静态库创建“.so”文件。
shell> cd MyODBC-3.51.01 shell> make shell> cd driver shell> CC=/usr/bin/gcc \ $CC -bundle -flat_namespace -undefined error \ -o .libs/libmyodbc3-3.51.01.so \ catalog.o connect.o cursor.o dll.o error.o execute.o \ handle.o info.o misc.o myodbc3.o options.o prepare.o \ results.o transact.o utility.o \ -L/usr/local/mysql/lib/mysql/ \ -L/usr/local/iodbc/lib/ \ -lz -lc -lmysqlclient -liodbcinst
如果你正在使用unixODBC而不是iODBC,务必将“-liodbcinst”更改为“-lodbcinst”,并相应地配置库路径。
这样,就创建了libmyodbc3-3.51.01.so文件,并将其放在“.libs”目录下。将该文件拷贝到MyODBC库目录下(/usr/local/lib,或使用“--prefix”提供的安装目录下的“lib”目录)。
shell> cd .libs
shell> cp libmyodbc3-3.51.01.so /usr/local/lib
shell> cd /usr/local/lib
shell> ln -s libmyodbc3-3.51.01.so libmyodbc3.so
要想创建线程安全驱动程序库:
shell> CC=/usr/bin/gcc \ $CC -bundle -flat_namespace -undefined error -o .libs/libmyodbc3_r-3.51.01.so catalog.o connect.o cursor.o dll.o error.o execute.o handle.o info.o misc.o myodbc3.o options.o prepare.o results.o transact.o utility.o -L/usr/local/mysql/lib/mysql/ -L/usr/local/iodbc/lib/ -lz -lc -lmysqlclient_r -liodbcinst
shell> make install
该命令将安装下述库集合之一:
对于MyODBC 3.51:
· libmyodbc3.so
· libmyodbc3-3.51.01.so,其中,3.51.01是驱动程序的版本
· libmyodbc3.a
对于线程安全MyODBC 3.51:
· libmyodbc3_r.so
· libmyodbc3-3_r.51.01.so
· libmyodbc3_r.a
对于MyODBC 2.5.0:
· libmyodbc.so
· libmyodbc-2.50.39.so,其中,2.50.39是驱动程序的版本
· libmyodbc.a
关于创建进程的更多信息,请参阅与源码分发版一起提供的INSTALL文件。注意,如果你试图使用Sun的“make”,可能会以错误结束。从另一方面来说,GNU gmake在所有平台上均能良好工作。
shell> make test
首先,务必在odbc.ini中配置DSN 'myodbc3',并将环境变量ODBCINI指向正确的odbc.ini文件;同时MySQL服务器应处于运行状态。在驱动分发版中,可找到一个示例用odbc.ini文件。
你甚至可以更改示例/运行示例脚本,以命令行参数的形式将所需的DSN、UID和PASSWORD值传递给示例。
shell> ./configure --prefix=/usr/local
--with-unixODBC=/usr/local
--with-mysql-path=/usr/local/mysql
--disable-shared
--enable-gui=no
--host=powerpc-apple
该命令假定unixODBC和MySQL均安装在默认位置。如不然,请进行相应配置。
在 Mac OS X环境下,“--enable-shared”选项将默认创建“.dylib”文件。你也可以采用下述方式创建“.so”文件:
shell> make
shell> cd driver
shell> CC=/usr/bin/gcc \
$CC -bundle -flat_namespace -undefined error
-o .libs/libmyodbc3-3.51.01.so *.o
-L/usr/local/mysql/lib/
-L/usr/local/iodbc/lib
-liodbcinst -lmysqlclient -lz -lc
要想创建线程安全驱动程序库:
shell> CC=/usr/bin/gcc \
$CC -bundle -flat_namespace -undefined error
-o .libs/libmyodbc3-3.51.01.so *.o
-L/usr/local/mysql/lib/
-L/usr/local/iodbc/lib
-liodbcinst -lmysqlclienti_r -lz -lc -lpthread
如果你正在使用unixODBC而不是iODBC,务必将“-liodbcinst”更改为“-lodbcinst”,并相应地配置库路径。
在Apple的GCC版本中,cc和gcc实际上均是gcc3的符号链接。
将该库拷贝到$prefix/lib目录下,并将symlink拷贝到libmyodbc3.so。
可以使用下述命令交叉检验输出的共享库属性:
shell> otool -LD .libs/libmyodbc3-3.51.01.so
如果使用cc:
shell> CC="cc" \
CFLAGS="+z" \
LDFLAGS="-Wl,+b:-Wl,+s" \
./configure --prefix=/usr/local
--with-unixodbc=/usr/local
--with-mysql-path=/usr/local/mysql/lib/mysql
--enable-shared
--enable-thread-safe
如果使用gcc:
shell> CC="gcc" \
LDFLAGS="-Wl,+b:-Wl,+s" \
./configure --prefix=/usr/local
--with-unixodbc=/usr/local
--with-mysql-path=/usr/local/mysql
--enable-shared
--enable-thread-safe
一旦创建了驱动程序,使用“chatr .libs/libmyodbc3.sl”交叉检查其属性,查看是否需要使用SHLIB_PATH环境变量的MySQL客户端库。对于静态版,忽略所有的共享库选项,并使用“--disable-shared”选项运行“configure”。
要想在AIX环境下创建驱动程序,可使用下述configure示例:
shell> ./configure --prefix=/usr/local
--with-unixodbc=/usr/local
--with-mysql-path=/usr/local/mysql
--disable-shared
--enable-thread-safe
注释: 关于在不同平台上创建和设置静态和共享库方式的更多信息,请参见。注释: 如果你对协助我们测试新的代码感兴趣,应阅读本节的内容。
要想获得我方的最新开发源码树,请:
1. 参见2.8.3节,“从开发源码树安装”,关于如何下载和安装BitKeeper的说明。
2. 安装完BitKeeper后,首先进入打算在其中工作的目录,然后,如果打算克隆MyODBC 3.51分支,请使用该命令:
3. shell> bk clone bk://mysql.bkbits.net/myodbc3 myodbc-3.51
在前面的示例中,源码树是在myodbc-3.51/中设置的,或在当前目录的myodbc3/子目录下设置的(默认)。如果你位于防火墙后,而且仅能启动HTTP连接,也可以通过HTTP使用BitKeeper。如果要求使用代理服务器,可简单地设置环境变量http_proxy,使之指向代理服务器:
shell> export http_proxy=""
执行克隆操作时,用http://替换bk://。例如:
shell> bk clone myodbc-3.51
首次下载源码树时需要一段时间,具体情况取决于连接速度,请耐心等候。
4. 要想运行下一组命令,需要GNU autoconf 2.52(或更新版本),automake 1.4,libtool 1.4,以及m4。
5. shell> cd myodbc-3.51
6. shell> bk -r edit
7. shell> aclocal; autoheader; autoconf; automake;
8. shell> ./configure # Add your favorite options here
9. shell> make
关于如何创建的更多信息,请参阅位于相同目录下的INSTALL文件。在Windows平台下,创建驱动程序时,请使用Windows Makefiles WIN-Makefile和WIN-Makefile_debug,更多信息,请参见26.1.6节,“在Windows平台上从源码版本安装MyODBC”。
10.完成创建后,运行make install,将MyODBC 3.51驱动程序安装到你的系统上。
11.如果进入了make阶段,但并未编译分发版本,请将其通报给。
12.启动了bk clone操作获得源码树后,应定期运行bk pull进行更新。
13.可以使用“bk sccstool”检查树的变更史。如果你发现了有趣的差异,并对代码存在一问,请立刻发送电子邮件至。
此外,如果你认为有更好的主意,请发送电子邮件至相同的地址并附上补丁。更改了源码后,使用“bk diffs”可生成补丁。如果你没有时间就你的观点编写代码,可发送描述性信息。
14.BitKeeper具有一个可通过bk helptool访问的帮助工具。
通过浏览,也能在线浏览变化集、注释和源代码。
事实上,数据源就是数据的路径。在不同的情况下,它可能有着不同的内容,但是在典型情况下,它指明了正在运行的MySQL服务器(例如,通过网络地址或服务器名),连接时该服务器的默认数据库,以及必要的连接信息(如端口)。MySQL驱动程序(以及Windows系统上的ODBC驱动管理器)将使用数据源进行连接。对于该目的,名为Microsoft ODBC数据源管理器的管理工具可能十分有用。
有两处可能保存初始化信息的位置: Windows注册表(Windows系统),或DSN文件(任何系统)。
如果信息位于Windows注册表中,它称为“机器数据源”。它可以是“用户数据源”,在这种情况下,只有一位用户能看到它。它也可以是“系统数据源”,在这种情况下,计算机上的所有用户均能访问它,如果用户是通过Microsoft Windows NT服务连接在一起的话,与该计算机相连的所有用户均能访问它。运行ODBC数据管理程序时,可以选择是否使用“用户”或“系统”,它们位于不同的选项卡上。
如果信息位于DSN文件中,它称为“文件数据源”。这是一种文本文件。其优点在于: (a)它适合于任何类型的计算机,而不仅仅是使用Windows操作系统的计算机;(b)其内容的拷贝或传输相对容易。
要想在Windows平台上添加和配置新的MyODBC数据源,请使用ODBC数据源管理器。ODBC管理器能够更新数据源连接信息。添加了数据源时,ODBC管理器能够更新注册信息。
要想从控制面板打开ODBC管理器:
1. 点击“开始”,将指针指向“设置”,然后点击“控制面板”。
2. 在运行Microsoft Windows 2000或更新版本的计算机上,双击“管理工具”,然后双击“数据源”(ODBC)。在运行旧版本Windows的计算机上,双击32位ODBC或ODBC。
打开ODBC数据源管理器对话框,如下图所示:
点击“帮助”以了解ODBC数据源管理器对话框各选项卡的详细信息。
要想在Windows平台上添加数据源:
1. 打开ODBC数据源管理器。
2. 在ODBC数据源管理器对话框中,点击“添加”。打开“创建新数据源”对话框。
3. 选择MySQL ODBC 3.51驱动程序,然后点击“完成”。打开“MySQL ODBC 3.51驱动程序-DSN配置”对话框,如下图所示:
4. 在“数据源名”框中,输入打算访问的数据源的名称。它可以是你选择的任何有效名称。
5. 在“描述”框中,输入DSn所需的描述信息。
6. 在“主机”或“服务器名”(或IP)框中,输入准备访问的MySQL服务器主机的名称。默认情况下为localhost(本地主机)。
7. 在“数据库名”框中,输入准备用作默认数据库的MySQL数据库名称。
8. 在“用户”框中,输入你的MySQL用户名(数据库用户ID)。
9. 在“密码”框中输入密码。
10.在“端口”框中,如果端口不是默认端口,输入端口号。
11.在“SQL命令”框中,可输入建立连接后自动执行的SQL语句。
最后,对话框与下图显示的类似:
点击“OK”添加该数据源。
注释: 点击“OK”后,将打开“数据源”对话框,ODBC管理器将更新注册信息。连接到该数据源时,你所输入的用户名和连接字符串将成为该数据源的默认连接值。
你也可以使用“测试数据源”按钮,测试你的设置是否适合于连接到服务器。该特性仅对MyODBC 3.51驱动程序有效。成功完成测试后,将显示下述窗口:
如果测试失败,将显示错误消息。
DNS配置对话框也有一个“选项”按钮。如果选择了它,将打开下述选项对话框,显示控制驱动程序的行为。关于这些选项的含义,请参见26.1.9.4节,“连接参数”。
注释: 在“驱动程序跟踪”选项下列出的选项已被禁止(灰色),除非你使用的是驱动DLL的调试版本。
要想在Windows平台上更改数据源:
1. 打开ODBC数据源管理器。点击恰当的选项卡“DSN”。
2. 选择打算更改的MySQL数据源,然后点击“配置”。打开“MySQL ODBC 3.51驱动程序-DSN配置”对话框。
3. 更改适用的数据源字段,然后点击“OK”。
更改完该对话框中的信息后,ODBC管理器将更新注册信息。
在Unix平台上,可以直接在odbc.ini文件中配置DSN条目。这里给出了1个典型的odbc.ini文件,在该文件中,分别将myodbc和myodbc3配置为MyODBC 2.50和MyODBC 3.51的DSN名称:
;
; odbc.ini对MyODBC和MyODBC 3.51驱动程序的配置
; [ODBC Data Sources] myodbc = MyODBC 2.50 Driver DSN myodbc3 = MyODBC 3.51 Driver DSN [myodbc] Driver = /usr/local/lib/libmyodbc.so Description = MyODBC 2.50 Driver DSN SERVER = localhost PORT = USER = root Password = Database = test OPTION = 3 SOCKET = [myodbc3] Driver = /usr/local/lib/libmyodbc3.so Description = MyODBC 3.51 Driver DSN SERVER = localhost PORT = USER = root Password = Database = test OPTION = 3 SOCKET = [Default] Driver = /usr/local/lib/libmyodbc3.so Description = MyODBC 3.51 Driver DSN SERVER = localhost PORT = USER = root Password = Database = test OPTION = 3 SOCKET =
关于可提供连接参数的清单,请参见26.1.9.4节,“连接参数”。
注释: 如果你正在使用unixODBC,可使用下述工具设置DSN:
· ODBCConfig GUI tool()
· odbcinst
在某些情况下使用unixODBC,可能会出现下述错误:
Data source name not found and no default driver specified(数据源名不存在,未指定默认驱动程序)
如果出现该情况,请确认ODBCINI和ODBCSYSINI环境变量指向正确的odbc.ini文件。例如,如果你的odbc.ini文件位于目录“/usr/local/etc”下,可将环境变量设为:
export ODBCINI=/usr/local/etc/odbc.ini
export ODBCSYSINI=/usr/local/etc
你可以在ODBC.INI文件的[Data Source Name](数据源名)部分、或通过SQLDriverConnect() call的InConnectionString参量为MyODBC指定下述参数。
参数 |
默认值 |
注释 |
user |
ODBC (on Windows) |
用于链接至MySQL的用户名。 |
server |
localhost |
MySQL服务器的主机名。 |
database |
|
默认数据库。 |
option |
0 |
指定MyODBC工作方式的选项。参见下面。 |
port |
3306 |
如果服务器不是本地主机将要使用的TCP/IP端口。 |
stmt |
|
连接至MySQL时将要执行的语句。 |
password |
|
服务器上用户账户的密码。 |
socket |
|
当服务器是本地主机是将要连接的Unix套接字文件或Windows命名管道。 |
选项参量用于通知MyODBC:客户端不是100% ODBC兼容的。在Windows平台下,正常情况下,应通过切换连接屏幕上的复选框选择选项,但也能在选项参量中选择它们。下述选项是按照它们在MyODBC连接屏幕上显示的顺序排列的:
值 |
描述 |
1 |
客户端无法处理,MyODBC返回列的实际宽度。 |
2 |
客户端无法处理,MyODBC返回受影响行的真值。如果设置了该标志,MySQL将返回“发现的行”取而代之。MySQL的版本必须是3.21.14或更高版本,该功能才能生效。 |
4 |
在c:\myodbc.log中生成调试日志。它与将MYSQL_DEBUG=d:t:O,c::\myodbc.log放到AUTOEXEC.BAT中的效果相同(在Unix平台下,该文件是/tmp/myodbc.log)。 |
8 |
不为结果和参数设置任何信息报限制。 |
16 |
即使驱动程序可能会给出提示,对出现的问题不予提示。 |
32 |
允许或禁止动态光标支持。(在MyODBC 2.50中不允许)。 |
64 |
在db_name.tbl_name.col_name中忽略数据库名的使用。 |
128 |
强制使用ODBC管理器光标(实验性)。 |
256 |
禁止使用扩展取数据(实验性)。 |
512 |
将CHAR列填充为全列宽。 |
1024 |
SQLDescribeCol()返回完全合格的列名。 |
2048 |
使用压缩客户端/服务器协议。 |
4096 |
通知服务器忽略函数名之后和“(”之前的空格(PowerBuilder要求这样)。这会使所有的函数名成为关键字。 |
8192 |
用命名管道链接至运行在NT环境下的mysqld服务器。 |
16384 |
将LONGLONG列更改为INT列(某些应用程序不能处理LONGLONG列)。 |
32768 |
从SQLTables返回作为Table_qualifier和Table_owner的用户(实验性)。 |
65536 |
从my.cnf的[client]和[odbc]组读取参数。 |
131072 |
增加一些额外检查(不应需要之,但…)。 |
262144 |
禁止事务。 |
524288 |
允许将查询记录到c:\myodbc.sql(/tmp/myodbc.sql)文件。(仅在调试模式下才能启用)。 |
1048576 |
不要驱动中的结果进行缓冲处理,而应从服务器读取“mysql_use_result()”。仅对正向光标才能起作用。当你不希望缓冲处理整个结果集时,对于大表处理,该选项十分重要。 |
2097152 |
强制使用正向光标类型。在应用程序设置了默认静态/动态光标类型的情况下,如果希望驱动程序使用非缓冲结果集,那么该选项能够保证正向光标的行为。 |
要想选择多个选项,可将它们的值加在一起。例如,将选项设置为12(4+8),就能获得调试功能,但没有信息包限制。
默认的myodbc3.dll是为优化性能而编译的。如果希望调试MyODBC 3.51(例如,启用跟踪功能),应使用myodbc3d.dll。要想安装该文件,请拷贝myodbc3d.dll,使之覆盖已安装的myodbc3.dll文件。一旦完成了调试操作,务必恢复至驱动DLL的发布版本,这是因为调试版本可能会导致性能问题。注意,在MyODBC 3.51.07至3.51.11中未包含myodbc3d.dll。如果你正在使用这些版本中的一个,应从之前的版本(例如3.51.06)拷贝该DLL文件。
对于MyODBC 2.50,采用了myodbc.dll和myodbcd.dll取而代之。
在下面的表各中,给出了针对各种配置的推荐选项值:
配置 |
选项值 |
Microsoft Access |
3 |
Microsoft Visual Basic |
3 |
具有很多行的大表 |
2049 |
驱动跟踪生成(调试模式) |
4 |
查询日志生成(调试模式) |
524288 |
生成驱动跟踪和查询日志(调试模式) |
524292 |
具有非缓冲结果的大表 |
3145731 |
是。通过指定DRIVER名称字段,可使用SQLDriverConnect连接到MySQL服务器。下面给出了使用DSN-Less连接的MyODBC连接字符串:
对于MyODBC 2.50:
ConnectionString = "DRIVER={MySQL};\
SERVER=localhost;\
DATABASE=test;\
USER=venu;\
PASSWORD=venu;\
OPTION=3;"
对于MyODBC 3.51:
ConnectionString = "DRIVER={MySQL ODBC 3.51 Driver};\
SERVER=localhost;\
DATABASE=test;\
USER=venu;\
PASSWORD=venu;\
OPTION=3;"
如果你使用的编程语言会将后跟空格的反斜杠转换为空格,最好将连接字符串指定为单个长字符串,或使用不会在其中添加空格的多个字符串串接。例如:
ConnectionString = "DRIVER={MySQL ODBC 3.51 Driver};"
"SERVER=localhost;"
"DATABASE=test;"
"USER=venu;"
"PASSWORD=venu;"
"OPTION=3;"
关于可提供连接参数的清单,请参见26.1.9.4节,“连接参数”。
如果你打算使用myuser和mypassword作为用户名和密码从系统B连接到系统A,可参考下面给出的简单步骤。
在系统A上,执行下述步骤:
1. 启动MySQL服务器。
2. 使用GRANT建立用户名为myuser的账户,该账户可使用密码myuser从系统B建立连接。
3. GRANT ALL ON *.* to 'myuser'@'B' IDENTIFIED BY 'mypassword';
4. GRANT语句为用户myuser授予了使用密码mypassword从系统B进行连接的所有权限。要想执行该语句,必须在系统A上拥有根用户权限,或是具有恰当权限的另一用户。关于MySQL权限的更多信息,请参见5.8节,“MySQL用户账户管理”。
在系统B上,执行下述步骤:
1. 使用下述连接参数配置MyODBC DSN:
2. DSN = remote_test
3. SERVER or HOST = A (or IP address of system A)
4. DATABASE = test (The default database or an appropriate one)
5. USER = myuser
6. PASSWORD = mypassword
关于建立DSN-less连接的更多信息,请参见26.1.9.5节,“没有预定义DSN下的连接”。
7. 使用Ping命令或其它方式检查是否能从系统B访问系统A。如果无法访问系统A,请检查网络或Internet连接,或与你的系统管理员联系。
8. 尝试使用DSN=remote_test进行连接。如果失败,请跟踪查询MyODBC日志,并根据日志给出的错误信息采取进一步的步骤。如果需要进一步帮助,请发送详细的电子邮件至。
在下述站点,你可以找到关于如何完成该操作的简单示例:.
如果遇到与MyODBC有关的困难或问题,首先应使用ODBC管理器和MyODBC生成一份日志文件(请求来自ODBC ADMIN的日志时获得的日志文件)。
要想通过驱动管理器获得ODBC跟踪文件,可采取下述步骤:
· 打开ODBC数据源管理器:
1. 点击“开始”,将指针指向“设置”,然后点击“控制面板”。
2. 在运行Microsoft Windows 2000、XP或2003的计算机上,双击“管理工具”,然后双击“数据源”(ODBC),如下图所示。
在运行早期Microsoft Windows版本的计算机上,双击“控制面板”中的32位ODBC或ODBC。
3. 打开ODBC数据源管理器对话框,如下图所示:
4. 点击“帮助”以了解ODBC数据源管理器对话框各选项卡的详细信息。
· 启用跟踪选项 对于Windows和Unix平台,该步骤不同。
要想在Windows平台上启用跟踪选项:
1. 通过“ODBC数据源管理器”对话框的“跟踪”选项卡,可对跟踪ODBC函数的方式进行配置。
2. 从“跟踪”选项卡激活了跟踪功能后,驱动管理器会对后续运行的所有应用程序的ODBC函数调用进行跟踪。
3. 激活跟踪功能前所运行应用程序的ODBC函数调用不会被记录。ODBC函数调用将被记录在你指定的日志文件中。
4. 点击“现在停止跟踪”后,跟踪功能将停止。请记住,启动跟踪功能后,日志文件将不断增大,而且跟踪功能会影响所有ODBC应用程序的性能。
要想在Unix平台上启用跟踪选项:
5. 在Unix平台上,需要在ODBC.INI文件中明确设置跟踪选项。
使用TraceFile和odbc.ini中的Trace(跟踪)参数打开或关闭跟踪功能,如下所示:
TraceFile = /tmp/odbc.trace
Trace = 1
TraceFile指明了跟踪文件的名称和完整路径,将Trace(跟踪)设为ON或OFF。也可以使用“1”或“Yes”表示ON,以及“0”或“No”表示OFF。如果正在使用unixODBC的ODBCConfig,然后遵照中介绍的关于跟踪unixODBC调用的指示说明。
要想生成MyODBC日志,可采取下述步骤:
6. 确保你所使用的是驱动程序调试DLL(对于MyODBC 3.51,它是myodbc3d.dll而不是myodbc3.dll,对于MyODBC 2.50,它是myodbcd.dll)。
最简单的方法是从MyODBC 3.51分发版找到myodbc3d.dll(或myodbcd.dll),并用其覆盖myodbc3.dll(或myodbc.dll),该文件通常位于C:\windows\system32或C:\winnt\system32目录下。注意,完成测试后,你或许希望恢复旧的myodbc.dll文件,这是因为它比myodbc3d.dll(或myodbcd.dll)快很多,因此,请保存原始DLL的备份。
7. 在“MyODBC连接/配置”屏幕上启用“跟踪MyODBC”选项。日志将被写入文件C:\myodbc.log。当你返回上述屏幕时,如果你设置的跟踪选项未被记住,表明你正在使用的是myodbcd.dll驱动(参见前面的介绍)。在Linux平台上,或你使用的是DSN-Less连接,需在连接字符串中提供“OPTION=4”。
8. 启动应用程序,并尝试着使其出现问题。然后检查MyODBC跟踪文件,找出可能出错的地方。
如果发现某些事项出错,请发送电子邮件至(或,如果有与MySQL AB签订的支持合同),简要描述出现的问题,并提供下述额外信息:
o MyODBC版本
o ODBC驱动管理器的类型和版本
o MySQL服务器的版本
o 驱动管理器的ODBC跟踪
o 来自MyODBC驱动的MyODBC日志文件
o 简单的可复制示例
请记住,你提供给我们的信息越多,我们更正问题的机会就越大。
此外,在提供缺陷信息前,请检查MyODBC邮件列表()。
使用下述应用程序测试了MyODBC:
MS Access 95, 97, 2000, and 2002
C++-Builder, Borland Builder 4
Centura Team Developer (formerly Gupta SQL/Windows)
ColdFusion (on Solaris and NT with service pack 5), . .
Crystal Reports
DataJunction
Delphi
ERwin
MS Excel
iHTML
FileMaker Pro
FoxPro
Notes 4.5/4.6
MS Visio Enterprise 2000
Vision
Visual Objects
Visual Interdev
SBSS
Perl DBD-ODBC
Paradox
Powerbuilder
Powerdesigner 32-bit
MS Visual C++
Visual Basic
ODBC.NET through CSharp(C#), VB and C++
Data Architect()
SQLExpress for Xbase++()
Open Office () . .
Star Office ()
G2-ODBC bridge ()
Sambar Server () .
如果你知道能够与MyODBC一起工作的其他应用程序,请以电子邮件的方式指明它:。
大多数程序均能与MyODBC一起工作,对上面所列的每一程序,我们自己进行了测试,或得到用户的确认。很多介绍中均给出了你可能会遇到问题的描述。
· 程序
注释
· Access
要想使Access工作:
o 如果你正在使用Access 2000,应从下述地址获取并安装最新的(2.6版或更高)Microsoft MDAC(Microsoft数据访问组件),。它更正了Access在将数据导出至MySQL时存在的一个缺陷,未指定表名和列名。另一种解决该缺陷的方法是,升级到MyODBC 2.50.33和MySQL 3.23.x, 它们共同提供了避免该问题的一种方式。
此外,你还应获取并应用Microsoft Jet 4.0 Service Pack 5 (SP5),可在下述地址找到它:。它修正了某些情况下在Access中列被标注为“#DELETED#”的问题。
注释: 如果你正使用MySQL 3.22,必须安装MDAC补丁,并使用MyODBC 2.50.32或2.50.34或更高版本以解决该问题。
o 对于所有版本的Access,应启用“MyODBC返回匹配行”选项。对于Access 2.0,还应额外启用“模拟ODBC 1.0”选项。
o 在希望能够更新的所有表中,均应有时间戳。为了获得最大的可移植性,在列声明中不要使用长度规范。也就是说,应使用TIMESTAMP,而不是TIMESTAMP(n), n < 14。
o 在表中应有1个主键。如不然,新的或更新的行可能会显示为“#DELETED#”。
o 仅应使用DOUBLE浮点字段。与单精度浮点进行比较时,Access将失败。其征兆是新的或更新的行可能会显示为“#DELETED#”,或无法找到或更新行。
o 如果你正使用MyODBC来链接到有BIGINT列的表,结果会显示为“#DELETED”。排除它的解决方案是:
§ 有1个以TIMESTAMP作为数据类型的虚拟列。
§ 在“ODBC DSN管理器”的连接对话框中选择“将BIGINT列更改为INT”选项。
§ 删除与Access的表链接,并重新创建它。
旧记录仍将显示为“#DELETED#”,但新增/更新的记录会恰当显示。
o 添加了TIMESTAMP列后,另一位用户更改了数据,如果错误依旧出现,下述技巧或许有所帮助:
不要使用表数据表视图。取而代之的是,从你希望使用的表创建一个表单,并使用表单数据表视图。应将TIMESTAM列的DefaultValue属性设置为NOW()。在视图中隐藏TIMESTAMP列或许是个好主意,这样就不会使你的用户感到迷惑。
o 在某些情况下,Access可能会生成MySQL无法理解的SQL语句。可通过在Access菜单中选择“Query|SQLSpecific|Pass-Through”来更正该问题。
o 在NT平台上,Access会将BLOB列通报为OLE OBJECTS(OLE对象)。如果你打算用MEMO列取而代之,应使用ALTER TABLE将BLOB列更改为TEXT。
o Access无法在任何时候均恰当处理DATE列。如果遇到这类问题,请将列更改为DATETIME。
o 如果在Access中存在定义为BYTE的列,Access会视图将其导出为TINYINT而不是TINYINT UNSIGNED。如果列中的值大于127,将出现问题。
· ADO
使用ADO API和MyODBC进行编码时,需要注意某些不被MySQL服务器支持的默认属性。例如,对于RecordCount属性,如果将CursorLocation属性用作adUseServer,将返回结果“-1”。要想获得正确的值,需要将该属性设置为adUseClient,如下面给出的VB代码示例所示:
Dim myconn As New ADODB.Connection
Dim myrs As New Recordset
Dim mySQL As String
Dim myrows As Long
myconn.Open "DSN=MyODBCsample"
mySQL = "SELECT * from user"
myrs.Source = mySQL
Set myrs.ActiveConnection = myconn
myrs.CursorLocation = adUseClient
myrs.Open
myrows = myrs.RecordCount
myrs.Close
myconn.Close
另一种处理方式是,对类似查询使用SELECT COUNT(*)语句以获取正确的行计数。
· 主动服务器页(ASP)
应选择“返回匹配行”选项。
· BDE应用程序
要想使这类应用程序工作,应选择“不优化列宽度并返回匹配行”选项。
· Borland Builder 4
开始查询时,可使用Active属性或Open方法。注意,Active将通过自动发出“SELECT * FROM ...”查询开始。如果表很大,这不是什么好事。
· ColdFusion(在Unix平台上)
下述信息取自ColdFusion文档:
使用下述信息来配置用于Linux的ColdFusion服务器,以便使用针对MySQL数据源的unixODBC驱动和MyODBC。Allaire已证明,MyODBC 2.50.26能够与MySQL 3.22.27以及用于Linux的ColdFusion一起工作。(任何较新的版本也应能正确工作)。你可以在网站http://dev.mysql.com/downloads/connector/odbc/上下载MyODBC。
通过ColdFusion 4.5.1版,可以使用“ColdFusion管理器”来添加MySQL数据源。但是,驱动程序未包含在ColdFusion 4.5.1版中。在MySQL驱动程序出现在ODBC数据源下拉列表之前,必须创建MyODBC驱动程序,并将其拷贝到/opt/coldfusion/lib/libmyodbc.so。
在Contrib目录下包含程序mydsn-xxx.zip,使用它,对于Coldfusion应用程序,可创建并删除用于MyODBC驱动的DSN注册文件。
· DataJunction
应对其进行更改,使之输出VARCHAR而不是ENUM,因为其导出ENUM的方式会造成MySQL问题。
· Excel
工作。一些提示:
o 如果遇到日期方面的问题,请使用CONCAT()函数,将其选择为字符串。例如:
o SELECT CONCAT(rise_time), CONCAT(set_time)
o FROM sunrise_sunset;
采用该方式以字符串提取的值应能被Excel97正确识别为时间值。
在本例中,CONCAT()的目的是让ODBC认为列是“字符串类型”。如果没有CONCAT(),ODBC会将列视为时间类型,Excel无法理解它。
注意,Excel存在1个缺陷,这是因为它会自动将字符串转换为时间。如果源是文本文件,不存在问题,但当源是通报各列准确类型的ODBC连接时,将出现问题。
· Word
要想将数据从MySQL提取到Word/Excel文档,需要使用MyODBC驱动程序以及“Microsoft查询帮助”插件。
例如,用含有两列文本的表创建1个数据库:
o 使用mysql客户端命令行工具插入行。
o 使用ODBC管理器创建1个DSN文件,例如,针对刚创建数据库的“my”。
o 打开Word应用程序。
o 创建1个新的空白文档。
o 在数据库工具栏上,按“插入数据库”按钮。
o 按“获取数据”按钮。
o 在“获取数据”屏幕右侧,按“Ms Query”按钮。
o 在“Ms Query”中使用“my DSN”文件创建1个新数据源。
o 选择新查询。
o 选择打算使用的列。
o 如果愿意,创建1个过滤器。
o 如果愿意,创建1个分类。
o 选择“将数据返回到Microsoft Word”。
o 点击“完成”。
o 点击“插入数据”并选择记录。
o 点击OK,在你的Word文档中将看到插入的行。
· odbcadmin
ODBC的测试程序。
· Delphi
必须使用BDE 3.2版或更新的版本。连接到MySQL时,选择“不优化列宽度”选项。
此外,这里给出了一些可能有用的Delphi代码,这些代码可设置为MyODBC设置ODBC条目和BDE条目。BDE条目要求用到“BDE别名编辑器”,它位于靠近你的“Delphi Super Page”上,可自由拖动。(下述内容由Bryan Brunton <>提供):
fReg:= TRegistry.Create;
fReg.OpenKey('\Software\ODBC\ODBC.INI\DocumentsFab', True);
fReg.WriteString('Database', 'Documents');
fReg.WriteString('Description', ' ');
fReg.WriteString('Driver', 'C:\WINNT\System32\myodbc.dll');
fReg.WriteString('Flag', '1');
fReg.WriteString('Password', '');
fReg.WriteString('Port', ' ');
fReg.WriteString('Server', 'xmark');
fReg.WriteString('User', 'winuser');
fReg.OpenKey('\Software\ODBC\ODBC.INI\ODBC Data Sources', True);
fReg.WriteString('DocumentsFab', 'MySQL');
fReg.CloseKey;
fReg.Free;
Memo1.Lines.Add('DATABASE NAME=');
Memo1.Lines.Add('USER NAME=');
Memo1.Lines.Add('ODBC DSN=DocumentsFab');
Memo1.Lines.Add('OPEN MODE=READ/WRITE');
Memo1.Lines.Add('BATCH COUNT=200');
Memo1.Lines.Add('LANGDRIVER=');
Memo1.Lines.Add('MAX ROWS=-1');
Memo1.Lines.Add('SCHEMA CACHE DIR=');
Memo1.Lines.Add('SCHEMA CACHE SIZE=8');
Mem
Memo1.Lines.Add('SQLPASSTHRU MODE=SHARED AUTOCOMMIT');
Memo1.Lines.Add('SQLQRYMODE=');
Memo1.Lines.Add('ENABLE SCHEMA CACHE=FALSE');
Memo1.Lines.Add('ENABLE BCD=FALSE');
Memo1.Lines.Add('ROWSET SIZE=20');
Memo1.Lines.Add('BLOBS TO CACHE=64');
Memo1.Lines.Add('BLOB SIZE=32');
AliasEditor.Add('DocumentsFab','MySQL',Memo1.Lines);
· C++ Builder
用BDE 3.0版进行了测试。目前已知的唯一问题是,更改表方案时,查询字段不更新。然而,BDE看上去不会识别主键,它仅是名为PRIMARY的索引,尽管这谈不上是问题。
· Vision
应选择“返回匹配行”选项。
· Visual Basic
要想更新表,必须为表定义主键。
带有ADO的Visual Basic不能处理大整数。这意味着某些查询(如SHOW PROCESSLIST等)不会正确工作。更正方法是,在ODBC连接字符串中使用OPTION=16384,或在MyODBC连接屏幕上选择“将BIGINT列更改为INT”选项。或许,你也希望选择“返回匹配行”选项。
· VisualInterDev
如果在结果中有BIGINT,可能会出现错误“[Microsoft][ODBC Driver Manager]驱动程序不支”。请在MyODBC连接屏幕上选择“将BIGINT列更改为INT”选项。
· Visual Objects
应选择“不优化列宽度”选项。
· MS Visio Enterprise 2000
通过MyODBC(2.50.37或更高版本),通过连接MS Vision Enterprise 2000和MySQL,并使用Visio的逆向工程师功能,我们建立了数据库模型,使用它来检索关于DB的信息(Visio显示了所有的列定义、主键、索引等)。此外,我们还通过指定Visio中的新表进行了测试,并通过MyODBC将其导出至MySQL。
要想使Microsoft Access能够与MyODBC一起工作,在你的客户端PC上必须完成下述操作。
1. 如果你正在使用Access 2000,应从下述地址获取并安装最新的(2.6版或更高)Microsoft MDAC(Microsoft数据访问组件),。它更正了Access在将数据导出至MySQL时存在的一个缺陷,未指定表名和列名。另一种解决该缺陷的方法是,升级到MyODBC 2.50.33和MySQL 3.23.x, 它们共同提供了避免该问题的一种方式。
此外,你还应获取并应用Microsoft Jet 4.0 Service Pack 5 (SP5),可在下述地址找到它:。它修正了某些情况下在Access中列被标注为“#DELETED#”的问题。
注释: 如果你正使用MySQL 3.22,必须安装MDAC补丁,并使用MyODBC 2.50.32或2.50.34或更高版本以解决该问题。
2. 安装最新版MySQL,http://dev.mysql.com/downloads/。
3. 安装最新版MyODBC 3.51或2.50,http://dev.mysql.com/downloads/connector/odbc/。
4. 对于所有版本的Access,应启用“MyODBC返回匹配行”选项。
5. 通过MyODBC,将Access用作MySQL服务器的前端程序。
除非已安装了MyODBC,否则不能将表或查询导出到MySQL。
要想将表从Access导入MySQL,请遵循下述说明:
1. 打开Access数据库或Access项目时,出现“数据库”窗口。其中显示了用于创建新数据库对象和打开已有对象的快捷方式。
2. 点击打算导出的表名或查询名,然后在“文件”菜单中选择“导出”。
3. 在“导出对象类型对象名至”对话框中,在“另存为类型”框中,选择“ODBC数据库()”,如下图所示:
4. 在“导出”对话框中,输入文件名(或使用建议的文件名),然后选择OK。
5. 显示“选择数据源”对话框,其中列出了为计算机上已安装的各ODBC驱动定义的数据源。点击“文件数据源”或“机器数据源”选项卡,然后双击打算导出至的MyODBC或MyODBC 3.51数据源。关于为MyODBC定义新数据源的方法,请参见26.1.9.2节,“在Windows上配置MyODBC DSN”。
Microsoft Access通过该数据源连接至MySQL服务器,并导出新的表和/或数据。
除非已安装了MyODBC,否则不能将表或查询导出到MySQL数据库。
要想将表从MySQL导入或链接到Access,请采取下述步骤:
1. 打开数据库,或切换到“数据库”窗口以打开数据库。
2. 要想导入表,在“文件”菜单上,将鼠标指针指向“获取外部数据”,然后点击“导入”。要想链接表,在“文件”菜单上,将鼠标指针指向“获取外部数据”,然后点击“链接表”。
3. 在“导入”(或“链接”)对话框中,在“文件类型”框中选择“ODBC Databases ()”。在“选择数据源”对话框中,列出了定义的数据源。显示“选择数据源”对话框,其中列出了为安装在计算机上的任何ODBC驱动定义的数据源。点击“文件数据源”或“机器数据源”选项卡,然后双击打算导出至的MyODBC或MyODBC 3.51数据源。关于为MyODBC或MyODBC 3.51驱动定义新数据源的方法,请参见26.1.9.2节,“在Windows上配置MyODBC DSN”。
4. 如果所选的数据源要求登录,请输入登录ID和密码(可能还需要额外信息),然后点击OK。
5. Microsoft Access通过ODBC数据源连接到MySQL服务器,并显示可导入或链接的表清单。
6. 点击希望导入或链接的每个表,然后点击OK。如果你正在链接1个表,但它没有唯一识别各条记录的索引,Microsoft Access将显示链接表中的字段列表。点击能唯一标识各记录的字段或字段组合,然后点击OK。
是。当链接表的结构或位置发生变化时,可采取下述步骤查看或刷新链接。“链接表管理器”列出了当前链接的所有表的路径。
要想查看或刷新链接:
1. 打开包含表链接的数据库。
2. 在“工具”菜单上,指向“加载项”(在Access 2000或更新版本中为“数据库实用工具”),然后点击“链接表管理器”。
3. 选中打算刷新链接的表的复选框。
4. 点击OK,刷新链接。
Microsoft Access将确认成功的刷新操作,或者,如果未找到表,将显示“选择