我知道并且我在Stackoverflow中研究了很多非常类似的问题。我已经尝试了所有的解决方案,没有任何对我有用。
我使用以下查询来插入用户记录
INSERT INTO `user`(user_name,`password`) VALUE ("D001",AES_ENCRYPT('password1234',"hello"))
当我这样做时,我得到了
1 row(s) affected, 1 warning(s)
Execution Time : 00:00:00:046
Transfer Time : 00:00:00:000
Total Time : 00:00:00:046
Warning Code : 1366
Incorrect string value: '\x92\xB7\xFF\xF3\xD1\xF6...' for column 'password' at row 1
---------------------------------------------------
通过上面的更新,只使用user_user插入行,但密码为空。
我通过引用类似问题所做的工作如下
1)SET NAMES utf8mb4
2)ALTER TABLE user
CONVERT TO CHARACTER SET utf8mb4;
3)在my.ini配置文件中,我添加了character_set_server = utf8mb4
我仍然遇到同样的问题。怎么解决这个?
更新: 问题不仅仅是密码。我想要做的是加扰所有必需的列,以便用户无法正常查看这些列。所以,我使用过AES_ENCRYPT。
问题是您将二进制数据存储在char,varchar或text列中。
或
user
(user_name,password
)VALUE(“D001”,HEX(AES_ENCRYPT('password1234',“hello”)))并在需要解密时使用UNHEX()
函数; AES_DECRYPT(UNHEX(password),"hello")
要么
password
列转换为可以存储二进制数据的类型,例如binary
或varbinary
类型。