我正在尝试插入一个 Base64Encoded 字符串,有时它会返回 MySQL 错误:Incorrect string value: '\xFBy\x1Eh\x00...' for column 'Data' at row 1(错误代码: 1366, 状态: HY000)
我运行的查询很简单,例如:
UPDATE Table SET Data='BASE64ENCODED STRING'
但是需要注意的是,不正确的字符串值错误并不总是会发生。如果我再次重复完全相同的查询,它会接受字符串...?
Data-column
的类型为 LONGTEXT
并且具有 utf8mb4_general_ci
排序规则。
连接
也使用 utf8mb4
字符集和 utf8mb4_general_ci
排序规则。
我做错了什么?当我再次运行完全相同的查询时,它怎么可能不抛出错误并插入(更新)值?
我已经检查过base64编码的字符串,其中不包含像这样的字符串:\xFBy\x1Eh\x00
我使用准备好的语句来执行更新
最佳答案
我找到了解决方案。我必须在要插入的字符串前面添加 N 前缀。例如,以下查询:
UPDATE Table SET Data='BASE64ENCODED STRING'
必须更改为:
UPDATE Table SET Data=N'BASE64ENCODED STRING'
关于mysql - 插入 Base64Encoded 字符串返回不正确的字符串值 (MySQL),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51265276/