首页 > 解决方案 > 插入 Base64Encoded 字符串返回不正确的字符串值(MySQL)

问题描述

我正在尝试插入 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

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

标签: mysqlbase64

解决方案


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

UPDATE Table SET Data='BASE64ENCODED STRING'

必须改为:

UPDATE Table SET Data=N'BASE64ENCODED STRING'

推荐阅读