You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MySQL 5.7中AES_ENCRYPT与AES_DECRYPT无法正常工作问题咨询

MySQL 5.7中AES加密解密返回NULL的原因及解决方法

你的问题核心是变量赋值语法错误:在MySQL的SELECT语句里,=是比较运算符,不是赋值符号。

你写的代码:

SELECT @encrypt = AES_ENCRYPT('hello', 'key');
SELECT @decrypt = AES_DECRYPT(@encrypt, 'key');

第一行实际是在比较初始为NULL的@encrypt和加密结果,比较结果返回NULL,根本没给@encrypt赋值。后续@encrypt仍为NULL,解密自然也返回NULL,这也是你加unhex()没用的原因——变量本身就没拿到加密值。

正确写法

给用户变量赋值,需要用:=运算符,或者更清晰的SET语句:

方法1:使用:=赋值

SELECT @encrypt := AES_ENCRYPT('hello', 'key');
SELECT @decrypt := AES_DECRYPT(@encrypt, 'key');
-- AES_DECRYPT返回二进制字符串,需转换为明文
SELECT CAST(@decrypt AS CHAR);

方法2:使用SET语句(推荐)

SET @encrypt = AES_ENCRYPT('hello', 'key');
SET @decrypt = AES_DECRYPT(@encrypt, 'key');
SELECT CAST(@decrypt AS CHAR);

内容的提问来源于stack exchange,提问作者anon

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.05 21:27:31