MySQL:MySQL ODBC 3.51を経由してデータを挿入/更新すると「Data too long for column ‘XX’ at row 1」エラー

MySQL:MySQL ODBC 3.51を経由してデータを挿入/更新すると「Data too long for column 'XX' at row 1」エラー

ODBCドライバ経由でVBAのプログラムやAccessのリンクしたテーブルにレコードを追加したり更新したりすると、以下のエラーが表示される。

「Data too long for column 'XX' at row 1」エラー

暫定対処方法について覚書。

スポンサーリンク

エラーメッセージの内容

単純に考えれば、フィールドに定義されているデータ型よりも大きいデータを挿入/更新しようとしているためと思われるが、実際には、フィールドサイズよりも小さいデータを挿入したときでも発生する。

例えば、midiumtext型のフィールドにたった3文字の文字列を挿入しようとしたときなどがある。

エラーの発生原因

原因は、機種依存文字列が挿入または更新しようとしたデータに含まれていたためだった。

また、特定の漢字を使用した場合にも同様のエラーが発生する場合もあるようだ。

まだ完全な対処方法などがわかってない。

暫定回避策

現時点での暫定回避策について以下に記載。

  1. MySQLのODBCドライバの設定画面にある"Connect Options"タブの"Initial Statement"に「set names cp932」を設定する。
  2. VBAで指定する接続文字列に「STMT=set names cp932」を含める。

VBAからADOを使用してAddNew、Updateした際にはこれでうまくいった。

接続文字列の例

以下接続文字列の例。

conKB.ConnectionString = "Driver={MySQL ODBC 3.51 Driver};DATABASE=kb;OPTION=3306;PWD=XXXX;" _
                        & "PORT=3306;SERVER=localhost;STMT=SET NAMES cp932;UID=root"

基本的に機種依存文字は使用しないのが常識。

完全な回避策等わかり次第内容を更新する。

コメント

タイトルとURLをコピーしました