mysql - 插入 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
我使用准备好的语句来执行更新
解决方案
我找到了解决方案。我必须在要插入的字符串前面添加 N 前缀。例如,以下查询:
UPDATE Table SET Data='BASE64ENCODED STRING'
必须改为:
UPDATE Table SET Data=N'BASE64ENCODED STRING'
推荐阅读
- ios - 单击后退按钮时,导航堆栈中 VC 的 UINavigationBar 标题颜色不会改变
- scala - Scala 代码 - 使用关键字段跨多个日期合并多个相同格式的数据文件并仅保留最新日期数据
- python - Pyinstaller & pandas:找不到 Python.Runtime
- mysql - 无法设置与 MySQL 工作台的连接
- java - 解组 JsonNode 更改数据类型
- android - AsyncTask 中的崩溃
- arrays - 逐列乘积:矩阵维度必须一致
- angular - Angular 不能在动态组件中使用 fontawesome
- android - Cordova - Angular 4- 有没有办法重写android设备后退按钮
- python - 从索引数组访问 numpy 元素