Go to the first, previous, next, last section, table of contents.


18 MySQL ODBC Support

MySQLMyODBC プログラムで ODBC 機能を提供します。

18.1 Operating systems supported by MyODBC

MyODBC は 32-bit ODBC (2.50) level 0 driver で、 ODBC 化されたアプリケーションが MySQL に接続する場合に使用します。 MyODBC は、Windows95, Windows98, NT とほとんどの Unix で動きます。

通常、MyODBC は Windows マシンにだけ、インストールします。 、あなたのプログラムが ColdFusion のようにデータベースへの接続に ODBC だけを使用する場合に限り、UNIX に MyODBC が必要です。

MyODBC はパブリック・ドメインで、最新の物は以下にあります: http://www.mysql.com/download_myodbc.html.

日本語文字コードに対応させた物は: http://www.SoftAgency.co.jp/.

もし、UNIX に MyODBC をインストールしたいなら、 ODBC マネージャーも必要でしょう。 MyODBC は UNIX の ODBC マネージャー でも動作することが知られています。 MySQL useful links page の ODBC-related links 節に、見つけることができます。 「1.9 便利な MySQL 関連リンク」節参照.

Windows/NT の場合、MyODBC をインストール時にいかのような エラーになるかもしれません:

An error occurred while copying C:\WINDOWS\SYSTEM\MFC30.DLL. Restart Windows
and try installing again (before running any applications which use ODBC)

The problem in this case is that some other program is using ODBC and because of how windows is designed, one cannot in this case install new ODBC drivers with Microsoft's ODBC setup program :( これを解決するには、一度 ’セーフモード’でコンピュータを立ち上げ直し、 (windows リブート時に、F8キーを押すことで、セーフモードの選択が可能です) MyODBC をインストールして、リブートします。

MyODBC の設定画面には、MySQL 接続時のオプションがいくつか 設定できるようになっています。 もし問題がある場合は、これらを試します。

18.2 ODBC 管理プログラムの各種項目を埋めるには?

Windows95 上のサーバ名の記述には3つの可能性があります:

ODBC setup を埋める方法の例:

Windows DSN name:   test
Description:        This is my test database
MySql Database:     test
Server:             194.216.84.21
User:               monty
Password:           my_password
Port:

Windows DSN name 項目の値は、あなたのwindows ODBC setup における 一意の名前です。

ODBC setup 画面で、Server, User, Password, Port フィールドを設定する必要はありません。 しかし、ここで設定をすると、後でサーバーに接続する際に、 設定した値がデフォルト値として使用されます。 使用時に値を変更するオプションはあります。

ポート番号が設定されていないなら、デフォルトポート (3306) が使用されます。

もしオプションを Read options from C:\my.cnf にすると, clientodbc グループは `C:\my.cnf' ファイルから読まれます。 mysql_options() で使用できる全てのオプションが利用可能です。 「22.4.37 mysql_options()」節参照.

18.3 MyODBCでの問題をどのように報告すべきか?

MyODBC は以下でテストされました: Access, Admndemo.exe, C++-Builder, Borland Builder 4, Centura Team Developer (formerly Gupta SQL/Windows), ColdFusion (on Solaris and NT with svc pack 5), Crystal Reports, DataJunction, Delphi, ERwin, Excel, iHTML, FileMaker Pro, FoxPro, Notes 4.5/4.6, SBSS, Perl DBD-ODBC, Paradox, Powerbuilder, Powerdesigner 32 bit, VC++ and Visual Basic.

MyODBC で動作する他のアプリケーションについても知っているなら、 myodbc@lists.mysql.com までメールをください!

18.4 MyODBCで動作することが知られているプログラム

多くのプログラムが MyODBC で動作します。これらは我々自身がテストしたか、 または何人かの他のユーザから動作するという確証を得たものです:

Program
Comment
Access
Access を動作させるには:
アクセスは、MySQL が理解できない間違った SQL クエリを 作成するかもしれません。 これはアクセスのメニューから "Query|SQLSpecific|Pass-Through" を選択すれば 直すことが可能です。
Borland Builder 4
When you start a query you can use the property Active or use the method Open. Note that Active will start by automatically issue a SELECT * FROM ... query that may not be a good thing if your tables are big!
ColdFusion (On Unix)
The following information is taken from the ColdFusion documentation: Use the following information to configure ColdFusion Server for Linux to use the unixODBC driver with MyODBC for MySQL data sources. Allaire has verified that MyODBC version 2.50.26 works with MySQL version 3.22.27 and ColdFusion for Linux. (Any newer version should also work). You can download MyODBC at http://www.mysql.com/download_myodbc.html ColdFusion 4.5.1 allows you to us the ColdFusion Administrator to add the MySQL data source. However, the driver is not included with ColdFusion 4.5.1. Before the MySQL driver will appear in the ODBC datasources drop-down list, you must build and copy the MyODBC driver to `/opt/coldfusion/lib/libmyodbc.so'.
DataJunction
You have to change it to output VARCHAR rather than ENUM, as it exports the latter in a manner that causes MySQL grief.
Excel
動作。Some tips:
odbcadmin
ODBC のテストプログラム.
Delphi
DBE 3.2 以上を必ず使用してください。 MySQL に接続する際には、'Don't optimize column width' オプションをセットします。 ODBCエントリとBDEエントリの両方をセットアップするおりに役に立つであろう delphi のコード例を示します ( BDE は Delphi Super Page から無償で得られる BDE Alias Editor が必要です)。 : (Thanks to Bryan Brunton bryan@flesherfab.com for this)
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');
  Memo1.Lines.Add('SCHEMA CACHE TIME=-1');
  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 は、index PRIMARY だけを認識し、プライマリーキーは認識していないように思えます。これはさほど問題ではないですが。
Visual Basic
テーブルの更新を可能にするため、テーブルにプライマリーキーを作成しなくてはなりません。 Visual Basic with ADO can't handle big integers; This means that some queries like SHOW PROCESSLIST will not work properly. The fix is to set add the option OPTION=16834 in the ODBC connect string or set the Change BIGINT columns to INT option in the MyODBC connect screen.

18.5 AUTO_INCREMENT フィールドの値を ODBC で得る方法

共通の問題は、INSERT で自動的に生成されるIDの値を得ることです。 ODBCでは、以下のようにします( 例中の autoAUTO_INCREMENT フィールドです):

INSERT INTO foo (auto,text) VALUES(NULL,'text');
SELECT LAST_INSERT_ID();

もしくは、他のテーブルにIDを挿入するだけなら以下のようにします:

INSERT INTO foo (auto,text) VALUES(NULL,'text');
INSERT INTO foo2 (id,text) VALUES(LAST_INSERT_ID(),'text');

いくつかのODBCアプリケーション(少なくともDelphiとAccess)は、 新しく挿入された行を見つけるのに、以下のクエリが使用できます:

SELECT * FROM tbl_name WHERE auto IS NULL;

18.6 Reporting problems with MyODBC

もし MyODBC 使用時に難しい問題にあたった場合、 ODBC マネージャのログファイル (ODBCADMIN からリクエストしたときのログ) と MyODBC のログを取り始めるべきです。 これはいかなる問題にも解決の糸口になるはずです。 MyODBC ログを取るには、 MyODBC connect/configure 画面の 'Trace MyODBC' オプションをチェックします。 ログは `C:\myodbc.log' に書き出されます。 このオプションを使用するに当たり、 MYSQL2.DLL ではなく、 MYSQL.DLL を使用しなくてはなりません!

MyODBC が MySQL サーバーに送っているクエリを確認します; これは `myodbc.log' ファイル中に、>mysql_real_query と いう文字列が含まれている行です。

また、MyODBC か MySQL のエラーを見つけるためには、 同じコマンドを、mysql コマンドや admndemo でも試すべきです。

もし、問題を発見したなら、関係する行を(最大40行) myodbc@lists.mysql.com に 送ってください。 MyODBC や ODBC のログファイル全てを送らないように してください!

もし問題を見つけることが出来なかった場合、MyODBC ログファイル、 ODBC ログファイル、問題の説明する README ファイルを含んだ アーカイブ(tar か zip) を作成します。 これを ftp://www.mysql.com/pub/mysql/secret. に送ります。 TCX だけが、アップロードされたファイルにアクセスできます。

もし問題を見るためのプログラムも作っているなら、それも同時に送ります。

もしそのプログラムが他の SQL サーバーで動くなら、 他の SQL サーバーで同じことをした場合の ODBC ログファイルを作成すべきです。

多くの情報をあなたが提供すれば、我々は問題を解決しやすくなることを 念頭においてください。


Go to the first, previous, next, last section, table of contents.