[Delphi:89070] TSQLDataSetr で「項目の大きさが不正です」

266 views
Skip to first unread message

K.Nishiyama

unread,
Dec 21, 2006, 3:34:04 AM12/21/06
to Del...@ml.users.gr.jp
お世話になっております。
にしやまと申します。

Delphi7で、MysqlのBlob型のフィールド(AES_ENCRYPTで暗号化)のデータを取
得しようと、下記のコードを実行したところ、「項目の大きさが不正です」と
エラーが出力されます。
SQL自体は問題ないことをMySQL上で確認済みです。

var
sSql : String;
Ds : TSQLDataset;
begin
sSql := '';
sSql := sSql + ' SELECT UsrMng.RecNo, ';
sSql := sSql + ’AES_DECRYPT('UserName', 'Pass') AS UserName, ';
sSql := sSql + ’AES_DECRYPT(UserID', 'Pass') AS UserID ';
sSql := sSql + ' FROM UsrMng ';
sSql := sSql + ' ORDER BY AES_DECRYPT('UserName', 'Pass') ';
sSql := sSql + ' ; ';

SQLConnection1.Execute(sSql, nil, @Ds);


環境はDelphi7 + MySQL4.0.23です。

申し訳ございませんが、よろしくお願い致します。


TAKAHASHI, Tomohiro

unread,
Dec 21, 2006, 8:40:07 PM12/21/06
to Del...@ml.users.gr.jp
高橋(智)です。
何点か確認させてください。

接続形式はdbExpressでしょうか?
Delphi7に付属のdbExpressドライバでは、4.0.x 以降のバージョンはサポートしていないと
思いますが、何か別のdbExpressドライバを使ってらっしゃるのでしょうか?
どのようなBLOBデータでも発生する問題でしょうか?
また、MySQLのパケット(プロトコル)のサイズには上限(16MB等)があると思いますが、どのよ
うな設定になっているか分かりますでしょうか?

--
高橋智宏

TAKAHASHI, Tomohiro

unread,
Dec 21, 2006, 8:59:07 PM12/21/06
to Del...@ml.users.gr.jp
一部訂正します。すみません。

Delphiのリリース当時のMySQLのサポートは
・Delphi7.0(udpate無し)は 3.23.49
・Delphi7.1(udpateあり)は 4.0.18
だったと思います。

--
高橋智宏

K.Nishiyama

unread,
Dec 21, 2006, 9:36:43 PM12/21/06
to Del...@ml.users.gr.jp
ありがとうございます。

Delphi7のdbExpressを利用しています。
ただし、MYSQLのDLL「libMysql.dll」を3.23のものを利用しています。

エラーについて、いろいろと調査したところ、複数のテーブルを参照した場合
には、エラーが発生せず、正常にDatasetが作られているようです。
ちなみに、先日のSQLでも全く関係ないテーブルをFROM句に追加すると正常にDataset
が作られるようです。

> また、MySQLのパケット(プロトコル)のサイズには上限(16MB等)があると思い
ますが、どのよ
> うな設定になっているか分かりますでしょうか?
MYSQLはデフォルトの状態でインストールされています。
DBのデータ数は5レコード程度の上、SELECTしているフィールドの文字数も10Byte
程度ですので、メモリの使用量やパケットの量に問題があるとは、考えにくい
ような気がします。

上記のような状態ですので、取り急ぎ複数テーブルを毎回FROM句に追加し、GROUP
BY
でなんとかするしかないかなぁと考えています。

TAKAHASHI, Tomohiro

unread,
Dec 22, 2006, 2:03:36 AM12/22/06
to Del...@ml.users.gr.jp
高橋(智)です。

"K.Nishiyama" wrote:
>
> Delphi7のdbExpressを利用しています。
> ただし、MYSQLのDLL「libMysql.dll」を3.23のものを利用しています。

できれば、MySQL4.0.23に付属しているlibmysql.dllを使用したほうが
良いと思います。

> エラーについて、いろいろと調査したところ、複数のテーブルを参照した場合
> には、エラーが発生せず、正常にDatasetが作られているようです。

よく複雑そうな場合には発生しないのですか...

--
高橋智宏

Reply all
Reply to author
Forward
0 new messages