我试图插入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
我使用准备好的语句来执行更新
答案 0 :(得分:0)
我找到了解决方案。我必须在要插入的字符串前面添加N前缀。例如,以下查询:
UPDATE Table SET Data='BASE64ENCODED STRING'
必须更改为:
UPDATE Table SET Data=N'BASE64ENCODED STRING'