insert base64encoded string返回不正确的字符串值(mysql)

uwopmtnx  于 2021-06-21  发布在  Mysql
关注(0)|答案(1)|浏览(223)

我试图插入base64编码的字符串,有时它会返回mysql错误: Incorrect string value: '\xFBy\x1Eh\x00...' for column 'Data' at row 1 (error code: 1366, State: HY000) 我运行的查询很简单,例如:

UPDATE Table SET Data='BASE64ENCODED STRING'

但需要注意的是,不正确的字符串值错误并不总是发生。如果我再次重复完全相同的查询,它将接受字符串。。。?
这个 Data-column 属于类型 LONGTEXT 并且拥有 utf8mb4_general_ci 整理。
这个 connection 也在使用 utf8mb4 字符集 utf8mb4_general_ci 整理。
我做错了什么?当我再次运行完全相同的查询时,它怎么可能不抛出错误并插入(更新)值?
我已经检查了base64编码字符串,它不包含如下字符串: \xFBy\x1Eh\x00 我使用准备好的语句来执行更新

mfpqipee

mfpqipee1#

我找到了解决办法。我必须在要插入的字符串前面添加n前缀。例如,以下查询:

UPDATE Table SET Data='BASE64ENCODED STRING'

必须更改为:

UPDATE Table SET Data=N'BASE64ENCODED STRING'

相关问题