我知道并且我已经研究了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)设置名称utf8mb4
2)更改表user
转换为字符集utf8mb4;
3)在my.ini配置文件中,添加了 character_set_server = utf8mb4
仍然遇到同样的问题。该如何解决?
更新:
问题不仅限于密码。我想做的是对所有必需的列进行加扰,以使用户无法正常看到这些列。
因此,我使用了AES_ENCRYPT。
答案 0 :(得分:1)
问题是您将二进制数据存储在char,varchar或text列中。
任何一个
将数据存储为十六进制:
插入user
(用户名,password
)值(“ D001”,HEX(AES_ENCRYPT('password1234',“ hello”)))
并在需要解密时使用UNHEX()
函数; AES_DECRYPT(UNHEX(password),"hello")
或
password
列转换为可以存储二进制数据的类型,例如binary
或varbinary
类型。