[+/-]
ほとんどのプログラムは Connector/ODBC に対応しますが、以下にリストされているものにはそれぞれに、 Connector/ODBC とそのアプリケーションとの作業を向上拡大するための注釈とアドバイスがあります。
すべてのアプリケーションで、Connector/ODBC ドライバ、ODBC Manager 、およびアプリケーションで使われているライブラリとインターフェイス全部が最新バージョンになっているか確認してください。例えば Windows では、最新バージョンの Microsoft Data Access Components (MDAC) を使うことによって、ODBC との全体的な互換性、そして Connector/ODBC ドライバとの互換性が向上します。
[+/-]
Microsoft Office 、Microsoft Access 、そして ASP と Microsoft Visual Studio でサポートされている様々なプログラム言語を含む Microsoft アプリケーションの大多数は、Connector/ODBC との使用がテストで確認済みです。
Connector/ODBC に不具合が発生し、またそのプログラムが OLEDB にも対応する場合は、OLEDB ドライバの使用をお勧めします。
Connector/ODBC を通して Microsoft Access と MySQL の融合性を高めたい場合 :
すべてのバージョンの Access
で、Connector/ODBC Return matching
rows
オプションを有効にしてください。Access
2.0 では、Simulate ODBC 1.0
オプションも加えて有効にしてください。
アップデートしたいすべてのテーブルに、TIMESTAMP
カラムを設けてください。ポータビリティを最大にするには、カラム宣言
( MySQL 4.1
より前のバージョンではサポートされていません
) で長さ指定を使わないでください。
Access で使いたい MySQL
テーブル個々に基本キーを設置してください。それを行わない場合、新規またはアップデートされた行が
#DELETED#
と表示される場合があります。
DOUBLE
浮動小数点フィールドのみを使用。単精度浮動小数点値と比較する際、Access
に不具合が起きるためです。この徴候では通常、新規またはアップデートされた行が
#DELETED#
と表示される、または行の検出もしくはアップデートができなくなるということがあります。
Connector/ODBC を使って BIGINT
カラムのあるテーブルへリンクしている場合、結果が
#DELETED#
と表示されます。この問題を避けるには :
データタイプとして、TIMESTAMP
にもうひとつダミー カラムを設ける。
ODBC DSN Administrator
の接続ダイアログで、Change BIGINT
columns to INT
オプションを選択。
Access からテーブル リンクを削除し、また再作成する。
古い記録がまだ #DELETED#
と表示されるが、新しく加えられた、またはアップデートされた記録は正常に表示される。
TIMESTAMP
カラムを設けた後でも、エラー
Another user has changed your data
が発生する場合は、次の手段で解決することもあります
:
table
データシート
ビューを使用しない。代わりに、希望のフィールドでフォームを作成し、その
form
データシート
ビューを使用する。TIMESTAMP
カラムの DefaultValue
プロパティを、NOW()
に設定。後のユーザの混乱を避けるため、TIMESTAMP
カラムをビューから隠すとよい。
あるケースでは、Access が MySQL
には理解不能な SQL
文を発行することがあります。Access
のメニューから
"Query|SQLSpecific|Pass-Through"
を選択すると、これを解決できます。
Windows NT では、Access は BLOB
カラムを OLE OBJECTS
として報告します。代わりに
MEMO
カラムを希望する場合は、ALTER
TABLE
で BLOB
カラムを
TEXT
に変更してください。
Access は MySQL DATE
カラムを、常に正常に処理できるというわけではありません。もし問題がある場合は、カラムを
DATETIME
に変更してください。
Access に BYTE
と定義されたカラムがある場合、Access
はこれを TINYINT UNSIGNED
ではなく TINYINT
としてエクスポートしようとします。そのカラムに
127
より大きな値がある場合、これが問題となります。
Access に極めて大規模な ( 長い )
テーブルがある場合、それらを開くのに長い時間がかかる場合があります。または、仮想メモリが不足していると、最終的には
ODBC Query
Failed
エラーが発生し、テーブルを開くことができません。この問題に対処するには、次のオプションを選んでください
:
Return Matching Rows (2)
Allow BIG Results (8).
これらを足した値は 10 (
OPTION=10
) になります。
Access、ODBC および Connector/ODBC の使用に役立つ外部からの記事や情報 :
Access ODBC アプリケーションの最適化
Access や ODBC データソースで使用できるツールのリストに関しては、http://www.mysql.com/portal/software/convertors/ セクションを参照してください。
Microsoft Excel へのデータのインポート、特に数値やデータ、タイム値のインポートで問題がある場合は、ワークシート内のセルにデータがインサートされる時、ソース データのカラム タイプでデータ タイプが定義される Excel のバグが原因だと思われます。その結果、Excel がコンテントを誤って識別し、それが計算に使用される時、表示フォーマットとそのデータの双方に影響を及ぼします。
この問題を解消するには、CONCAT()
関数をクエリに使用してください。CONCAT()
を使うことで、Excel
が値をストリングとして扱うよう仕向け、それによって
Excel
が埋め込まれた情報を解析し、ほぼ正確に識別するようになります。
しかし、このオプションをもってしてもデータによっては、ソースデータに変化はないにもかかわらず、不正確にフォーマットされることがあります。Excel
の Format Cells
オプションを使用して、表示された情報のフォーマットを変えてください。
テーブルをアップデートするには、テーブルに基本キーを定義する必要があります。
ADO を使用した Visual Basic
は、大きな整数を扱うことができません。つまり、SHOW
PROCESSLIST
のようなクエリは正常に作動しません。これを解決するには、ODBC
接続ストリングで OPTION=16384
を使用するか、Connector/ODBC 接続スクリーンで
Change BIGINT columns to INT
オプションを選択します。また、Return
matching rows
オプションを選択するのもよいでしょう。
結果に BIGINT
がある場合、[Microsoft][ODBC Driver Manager]
Driver does not support this parameter
エラーが発生する恐れがあります。Connector/ODBC
接続スクリーンで、Change BIGINT columns to
INT
オプションを選択してみましょう。
ADO API と Connector/ODBC
でコード作成をしている場合、MySQL
サーバでサポートされていないデフォルトのプロパティに注意してください。例えば、CursorLocation
Property
を adUseServer
として使用すると、–1 という結果が
RecordCount Property
に戻されます。正しい値を得るには、このプロパティを下記の
VB コードのように、 adUseClient
に設定する必要があります。
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(*)
文を使用し、正しい行カウントを獲得します。
ADO の特定の SQL
文に影響を受けている行の数を検索するには、ADO
execute メソッドに RecordsAffected
プロパティを使用します。execute
メソッドの使用に関する詳しい情報は、http://msdn.microsoft.com/library/default.asp?url=/library/en-us/ado270/htm/mdmthcnnexecute.asp
をご覧ください。
詳細は、ActiveX Data Objects(ADO) Frequently Asked Questions を参照。
DSN で Return matching rows
オプションを選択してください。
Connector/ODBC を使用し、ASP を介して MySQL にアクセスする方法は、次の資料を参考にしてください :
ASP に関するよくある質問のリストは、http://support.microsoft.com/default.aspx?scid=/Support/ActiveServer/faq/data/adofaq.asp で閲覧できます。
Visual Basic および ASP に関する参考資料 :
MySQL
BLOB columns and Visual Basic 6 by Mike Hillyer
(<mike@openwin.org>
).
How
to map Visual basic data type to MySQL types by
Mike Hillyer (<mike@openwin.org>
).
[+/-]
Borland Database Engine (BDE) が使用されるすべての Borland アプリケーションでは、互換性を高めるため次の手順に従ってください :
BDE 3.2 以降にアップデートする。
DSN で Don't optimize column
widths
オプションを有効にする。
DSN で Return matching rows
オプションを有効にする。
クエリを開始する際、Active
プロパティか、Open
メソッドを使用することができます。Active
は、SELECT * FROM ...
クエリを自動的に発行することで開始するので注意してください。大規模なテーブルを扱っている場合、これは欠点になりえます。
また以下は、Connector/ODBC の ODBC エントリと
BDE
エントリの両方をセットアップする、役に立ちうる
Delphi コードの一例です。BDE
エントリには、身近な Delphi Super Page
から無料で入手できる BDE Alias Editor
が必要です。( Bryan Brunton
<bryan@flesherfab.com>
に提供を感謝します ) :
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);
次の情報は ColdFusion の資料より引用したものです。
次の情報を使用して Linux 用の ColdFusion
サーバを構成し、Connector/ODBC を使った
unixODBC
ドライバを MySQL
データソース に使用します。Allaire は、MyODBC
2.50.26 が MySQL 3.22.27 および Linux 用の ColdFusion
に対応することを立証しています
( 最近のバージョンであれば問題なく作動するはずです
) 。http://dev.mysql.com/downloads/connector/odbc/ で
Connector/ODBC
をダウンロードすることができます。
ColdFusion version 4.5.1 があれば、ColdFusion
Administrator を使って MySQL
を加えることができます。しかし、ColdFusion
version 4.5.1
にドライバは含まれていません。MySQL
ドライバが ODBC
データソースのドロップダウン
リストに現れる前に、Connector/ODBC
ドライバを構築し、/opt/coldfusion/lib/libmyodbc.so
にコピーする必要があります。
Contrib ディレクトリは
mydsn-
プログラムを含んでおり、これにより ColdFusion
アプリケーション上の Connector/ODBC
ドライバ用に、DSN レジストリ
ファイルを構築または除去することができることになります。
xxx
.zip
ColdFusion と Connector/ODBC の使用に関する情報とガイドは、次の外部サイトでご覧ください :
Open Office (http://www.openoffice.org) How-to: MySQL + OpenOffice. How-to: OpenOffice + MyODBC + unixODBC.
Sambar Server (http://www.sambarserver.info) How-to: MyODBC + SambarServer + MySQL.