我有一个旧表,用于使用 Rails ActiveRecord 序列化程序将 json 保存到字符串 SQL 字段。我创建了一个新表,字段数据类型为 JSON,这是 MySQL 5.7 中引入的。但是直接将数据从旧字段复制到新字段会出现 JSON 错误,提示 json 结构错误。
更具体地说,问题在于我的数据库目前还不支持 unicode 字符,而且数据库太大,无法迁移所有内容来支持它。
我正在寻找一种将数据从旧字段迁移到新 JSON 字段的方法
我发现将 JSON 字符串中的 unicode 字符替换为 \\u
解决了问题,但我不仅仅能够这样做:
update table_name set column_name=REPLACE(column_name, '\u', '\\u');
因为它再次出错
ERROR 3140 (22032): Invalid JSON text: "Invalid escape character in string." at position 564 in value for column 'table_name.column_name'.
最佳答案
对于将表值\u 更新为\\u 的 sql:
update table_name set column_name=REPLACE(column_name, '\\u', '\\\\u') [where condition];
关于mysql - Rails 将 JSON 序列化为字符串在 mysql JSON 字段上出现错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44982070/