插入Base64Encoded字符串返回错误的字符串值(MySQL)

时间:2018-07-10 12:30:41

标签: mysql base64

我试图插入Base64Encoded字符串,有时它会向我返回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

的字符串

我使用准备好的语句来执行更新

1 个答案:

答案 0 :(得分:0)

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

UPDATE Table SET Data='BASE64ENCODED STRING'

必须更改为:

UPDATE Table SET Data=N'BASE64ENCODED STRING'