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です。
申し訳ございませんが、よろしくお願い致します。
接続形式はdbExpressでしょうか?
Delphi7に付属のdbExpressドライバでは、4.0.x 以降のバージョンはサポートしていないと
思いますが、何か別のdbExpressドライバを使ってらっしゃるのでしょうか?
どのようなBLOBデータでも発生する問題でしょうか?
また、MySQLのパケット(プロトコル)のサイズには上限(16MB等)があると思いますが、どのよ
うな設定になっているか分かりますでしょうか?
--
高橋智宏
Delphiのリリース当時のMySQLのサポートは
・Delphi7.0(udpate無し)は 3.23.49
・Delphi7.1(udpateあり)は 4.0.18
だったと思います。
--
高橋智宏
Delphi7のdbExpressを利用しています。
ただし、MYSQLのDLL「libMysql.dll」を3.23のものを利用しています。
エラーについて、いろいろと調査したところ、複数のテーブルを参照した場合
には、エラーが発生せず、正常にDatasetが作られているようです。
ちなみに、先日のSQLでも全く関係ないテーブルをFROM句に追加すると正常にDataset
が作られるようです。
> また、MySQLのパケット(プロトコル)のサイズには上限(16MB等)があると思い
ますが、どのよ
> うな設定になっているか分かりますでしょうか?
MYSQLはデフォルトの状態でインストールされています。
DBのデータ数は5レコード程度の上、SELECTしているフィールドの文字数も10Byte
程度ですので、メモリの使用量やパケットの量に問題があるとは、考えにくい
ような気がします。
上記のような状態ですので、取り急ぎ複数テーブルを毎回FROM句に追加し、GROUP
BY
でなんとかするしかないかなぁと考えています。
"K.Nishiyama" wrote:
>
> Delphi7のdbExpressを利用しています。
> ただし、MYSQLのDLL「libMysql.dll」を3.23のものを利用しています。
できれば、MySQL4.0.23に付属しているlibmysql.dllを使用したほうが
良いと思います。
> エラーについて、いろいろと調査したところ、複数のテーブルを参照した場合
> には、エラーが発生せず、正常にDatasetが作られているようです。
よく複雑そうな場合には発生しないのですか...
--
高橋智宏