【MySQL】HEX,UNHEX 用例一则

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
云数据库 RDS MySQL,高可用系列 2核4GB
简介: 使用mysqldump 对一个数据库进行备份,然后恢复到另一个数据库中,遇到如下报错ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'Y','Y','root');显然是语句的语法问题,查看文件对应位置的内容,是红色部分导致报错。
使用mysqldump 对一个数据库进行备份,然后恢复到另一个数据库中,遇到如下报错
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'Y','Y','root');
显然是语句的语法问题,查看文件对应位置的内容,是红色部分导致报错。
LOCK TABLES `USER` WRITE;
/*!40000 ALTER TABLE `USER` DISABLE KEYS */;
INSERT INTO `USER` VALUES (1,'Y','Y','Y','Y','Y','Y','XXX酆9聜锟  Y','Y','yangql');
PASSWORD 字段为 mediumblob 字段导致“’”分隔符被吞噬,由于保存密码字段的二进制编码的问题,引号分隔符被当作了数据的一部分,从而使得数据导入异常。
CREATE TABLE `USER` (
  `USER_ID` bigint(20) NOT NULL,
  `ALTER_PRIV` char(1) CHARACTER SET latin1 COLLATE latin1_bin NOT NULL DEFAULT '0',
 .....
  `PASSWORD` mediumblob NOT NULL,
  `SELECT_PRIV` char(1) CHARACTER SET latin1 COLLATE latin1_bin NOT NULL DEFAULT '0',
 .....
  UNIQUE KEY `UNIQUEUSER` (`USERNAME`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

尝试手工对导出的文本文件进行修改,总是将密码修改为其他字段一直不成功
又由于此表被其他表作为外键父表引用,不能直接对插入的数据进行delete操作,选择手工将密码字段update。如果将一个字段更新为二进制模式呢?
这里使用把16进制的字符串转为二进制的数据导入库中,
update user set PASSWORD=UNHEX('79616E67716C20697320E58C97E59CA8E58D97E696B9') where USERNAME='yangql';
介绍一下 HEX,UNHEX的使用方法。
root@rac1 : (none) 22:05:17> select hex('yangql is 北在南方');
+----------------------------------------------+
| hex('yangql is 北在南方')                    |
+----------------------------------------------+
| 79616E67716C20697320E58C97E59CA8E58D97E696B9 |
+----------------------------------------------+
1 row in set (0.00 sec)
root@rac1 : (none) 22:05:23> select
unhex('79616E67716C20697320E58C97E59CA8E58D97E696B9');
+-------------------------------------------------------+
| unhex('79616E67716C20697320E58C97E59CA8E58D97E696B9') |
+-------------------------------------------------------+
| yangql is 北在南方                                    |
+-------------------------------------------------------+
1 row in set (0.00 sec)
相关实践学习
如何快速连接云数据库RDS MySQL
本场景介绍如何通过阿里云数据管理服务DMS快速连接云数据库RDS MySQL,然后进行数据表的CRUD操作。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
8月前
|
关系型数据库 MySQL
925. 【mysql】convert 函数
925. 【mysql】convert 函数
141 3
|
8月前
|
SQL 关系型数据库 MySQL
MySQL中的12个SQL编写规范
SQL良好习惯提升查询清晰度、效率和安全性,包括使用EXPLAIN分析查询计划、DELETE/UPDATE时加LIMIT限制影响范围、为表和字段添加注释、关键字大写缩进、指定INSERT字段名、先测试后执行、表含主键及时间戳字段、Update/Delete需Where条件、用InnoDB引擎、避免SELECT *,选择UTF8字符集和规范索引命名。
MySQL中的12个SQL编写规范
|
7月前
|
关系型数据库 MySQL
MySQL中CASE WHEN用法总结
MySQL中CASE WHEN用法总结
|
7月前
|
SQL 关系型数据库 MySQL
MySQL——case when语句测试
MySQL——case when语句测试
72 0
|
Oracle 关系型数据库 MySQL
mysql replace into 缺陷的解决方案
mysql replace into 缺陷的解决方案
276 0
|
关系型数据库 MySQL
Mysql中 Case的使用方法
Mysql中 Case的使用方法
|
关系型数据库 MySQL
mysql的常见命令与语法规范
mysql的常见命令与语法规范
87 0
|
SQL 关系型数据库 MySQL
MySql SQL 脚本的可移植性,MySql 可以执行的注释代码
MySql SQL 脚本的可移植性,MySql 可以执行的注释代码
141 0
|
关系型数据库 MySQL 数据库连接
mysql从安装到建库,utf8mb4最佳实践,jdbc连接串全解析
mysql从安装到建库,utf8mb4最佳实践,jdbc连接串全解析
4283 0
|
SQL 关系型数据库 MySQL
mysql 替换字段中的部分字符,mysql替换字符串,mysql 替换字段内容,mysql replace
mysql 替换字段中的部分字符,mysql替换字符串,mysql 替换字段内容,mysql replace
280 0