こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

締切り済みの質問

aes_decryptでsyntax error

はじめまして。
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が空の値を返しました。(例えば行が空とか).
--

投稿日時 - 2007-04-21 02:57:59

QNo.2937546

困ってます

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(1)

ANo.1

情報が不正確です。

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

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

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

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

投稿日時 - 2007-04-21 03:53:53

補足

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:42

お礼

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:59

あなたにオススメの質問