dポイントプレゼントキャンペーン実施中!

はじめまして。
mysql 4.0.26でaes_decryptを使うとsyntax errorとなってしまいます。(mysql4.0.26+phpMyAdmin 2.6.4-pl2)
aes_decryptに関してはこのサイト及びGoogleで調べていろいろ試したのですが実行することができませんでした。
皆様のお知恵を拝借したく質問を作成させていただきました。
ご教授の程よろしくお願いいたします。

-- 実行したソース --
select col1, aes_decrypt(col2, 'key') as col2 from tbl;
-- エラーメッセージ --
#1064 - You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near '( col2 , 'key' ) as col2 from tbl LIMIT 0, 30' at line 1

以下のソースを実行するとエラーが発生することなく終了しますが、
最後のdrop table文を削除すると上記のエラーが発生します。
--- 以下ソース ---
create table tbl( col1 integer, col2 tinyblob );
insert into tbl(col1, col2) values (1, aes_encrypt('test','key'));
select col1, aes_decrypt(col2, 'key') as col2 from tbl;
drop table tbl;
---

上記ソースを実行したときのphpmyadminのメッセージです
--
SQL 照会が正常に実行されました
実行した SQL 照会:
CREATE TABLE tbl(
col1 integer,
col2 tinyblob
);# MySQLが空の値を返しました。(例えば行が空とか).
INSERT INTO tbl( col1, col2 )
VALUES ( 1, aes_encrypt( 'test', 'key' ) ) ;# 影響された行数:1
SELECT col1, aes_decrypt(
col2, 'key'
) AS col2
FROM tbl;# 行: 1
DROP TABLE tbl;# MySQLが空の値を返しました。(例えば行が空とか).
--

A 回答 (1件)

情報が不正確です。



実行したというSQLのソースと、エラーメッセージ中に埋め込まれているソース(「~LIMIT 0, 30」指定) が合っていませんが?

最後にphpMyAdminで実行結果(?)が示されていますが、phpMyAdminではエラーにならず、別のクライアント(ソフト)で実行したらエラーになったと言ってますか?

これだけでは、「aes_encrypt関数が原因」と判断した理由が分かりません。

このソースでは○○、このソースでは××と、正しい対応で示してください。

この回答への補足

chukenkenkou様
ご指摘ありがとうございます。補足させていただきます。

>実行したというSQLのソースと、エラーメッセージ中に埋め込まれてい>るソース(「~LIMIT 0, 30」指定) が合っていませんが?

LIMIT 0,30はphpMyAdminが自動的に追加しているようです。

>最後にphpMyAdminで実行結果(?)が示されていますが、phpMyAdmin
>ではエラーにならず、別のクライアント(ソフト)で実行したらエラ
>ーになったと言ってますか?

問題はphpからPEARのDBクラスライブラリを利用したアプリケーション内で発生し、切り分けを行うためにphpmyadminでテストしていました。
エラーが出るのはアプリ、phpmyadmin共に同じです。

phpmyadminの実行結果のあたりわかりづらかったですね。申しわけありません。
--
create table tbl( col1 integer, col2 tinyblob );
insert into tbl(col1, col2) values (1, aes_encrypt('test','key'));
--
でテーブル作成、行の挿入を行い
---
select col1, aes_decrypt(col2, 'key') as col2 from tbl;
--
でselectするとエラーが発生しますが、

以下のようにdrop tableを追加するとエラーは発生しません。
ただし、selectの結果は表示されないため正しくデータが抽出されているかは不明です。
---
create table tbl( col1 integer, col2 tinyblob );
insert into tbl(col1, col2) values (1, aes_encrypt('test','key'));
select col1, aes_decrypt(col2, 'key') as col2 from tbl;
drop table tbl;
---

補足日時:2007/05/01 18:56
    • good
    • 0
この回答へのお礼

chukenkenkou様
ご指摘ありがとうございます。補足させていただきます。

>実行したというSQLのソースと、エラーメッセージ中に埋め込まれてい>るソース(「~LIMIT 0, 30」指定) が合っていませんが?

LIMIT 0,30はphpMyAdminが自動的に追加しているようです。

>最後にphpMyAdminで実行結果(?)が示されていますが、phpMyAdmin
>ではエラーにならず、別のクライアント(ソフト)で実行したらエラ
>ーになったと言ってますか?

問題はphpからPEARのDBクラスライブラリを利用したアプリケーション内で発生し、切り分けを行うためにphpmyadminでテストしていました。
エラーが出るのはアプリ、phpmyadmin共に同じです。

phpmyadminの実行結果のあたりわかりづらかったですね。申しわけありません。
--
create table tbl( col1 integer, col2 tinyblob );
insert into tbl(col1, col2) values (1, aes_encrypt('test','key'));
--
でテーブル作成、行の挿入を行い
---
select col1, aes_decrypt(col2, 'key') as col2 from tbl;
--
でselectするとエラーが発生しますが、

以下のようにdrop tableを追加するとエラーは発生しません。
ただし、selectの結果は表示されないため正しくデータが抽出されているかは不明です。
---
create table tbl( col1 integer, col2 tinyblob );
insert into tbl(col1, col2) values (1, aes_encrypt('test','key'));
select col1, aes_decrypt(col2, 'key') as col2 from tbl;
drop table tbl;
---

お礼日時:2007/04/22 07:01

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!