关于blob数据类型引起的mysqldump乱码问题
使用mysqldump导出的sql有乱码
[root@caimeidev2 /]# mysqldump -uusermane -ppassword -h127.0.0.1 -P3306 --routines --default-character-set=utf8 db_name > db_name.sql
sql乱码
DROP TABLE IF EXISTS `sys_user`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `sys_user` (
`id` varchar(64) NOT NULL COMMENT 'ç¼<96>å<8f>·',
`company_id` varchar(64) NOT NULL COMMENT 'å½<92>å±<9e>å<85>¬å<8f>¸',
`office_id` varchar(64) NOT NULL COMMENT 'å½<92>å±<9e>é<83>¨é<97>¨',
`login_name` varchar(100) NOT NULL COMMENT 'ç<99>»å½<95>å<90><8d>',
`password` varchar(100) NOT NULL COMMENT 'å¯<86>ç <81>',
`no` varchar(100) DEFAULT NULL COMMENT 'å·¥å<8f>·',
`name` varchar(100) NOT NULL COMMENT 'å§<93>å<90><8d>',
`email` varchar(200) DEFAULT NULL COMMENT 'é<82>®ç®±',
`phone` varchar(200) DEFAULT NULL COMMENT 'ç<94>µè¯<9d>',
`mobile` varchar(200) DEFAULT NULL COMMENT 'æ<89><8b>æ<9c>º',
`user_type` char(1) DEFAULT NULL COMMENT 'ç<94>¨æ<88>·ç±»å<9e><8b>',
`photo` varchar(1000) DEFAULT NULL COMMENT 'ç<94>¨æ<88>·å¤´å<83><8f>',
`login_ip` varchar(100) DEFAULT NULL COMMENT 'æ<9c><80>å<90><8e>ç<99>»é<99><86>IP',
`login_date` datetime DEFAULT NULL COMMENT 'æ<9c><80>å<90><8e>ç<99>»é<99><86>æ<97>¶é<97>´',
`login_flag` varchar(64) DEFAULT NULL COMMENT 'æ<98>¯å<90>¦å<8f>¯ç<99>»å½<95>',
`create_by` varchar(64) NOT NULL COMMENT 'å<88><9b>建è<80><85>',
`create_date` datetime NOT NULL COMMENT 'å<88><9b>建æ<97>¶é<97>´',
`update_by` varchar(64) NOT NULL COMMENT 'æ<9b>´æ<96>°è<80><85>',
`update_date` datetime NOT NULL COMMENT 'æ<9b>´æ<96>°æ<97>¶é<97>´',
`remarks` varchar(255) DEFAULT NULL COMMENT 'å¤<87>注信æ<81>¯',
`del_flag` char(1) NOT NULL DEFAULT '0' COMMENT 'å<88> é<99>¤æ <87>è®°',
PRIMARY KEY (`id`),
KEY `sys_user_office_id` (`office_id`),
KEY `sys_user_login_name` (`login_name`),
KEY `sys_user_company_id` (`company_id`),
KEY `sys_user_update_date` (`update_date`),
KEY `sys_user_del_flag` (`del_flag`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='ç<94>¨æ<88>·è¡¨';
再三检查字符集设置没有问题,发现是因为表中Blob类型,需要在命令行中加入–hex-blob参数。
[root@caimeidev2 /]# mysqldump -uusermane -ppassword -h127.0.0.1 -P3306 --routines --default-character-set=utf8 --hex-blob db_name > db_name.sql
结果正常了
DROP TABLE IF EXISTS `sys_user`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `sys_user` (
`id` varchar(64) NOT NULL COMMENT '编号',
`company_id` varchar(64) NOT NULL COMMENT '归属公司',
`office_id` varchar(64) NOT NULL COMMENT '归属部门',
`login_name` varchar(100) NOT NULL COMMENT '登录名',
`password` varchar(100) NOT NULL COMMENT '密码',
`no` varchar(100) DEFAULT NULL COMMENT '工号',
`name` varchar(100) NOT NULL COMMENT '姓名',
`email` varchar(200) DEFAULT NULL COMMENT '邮箱',
`phone` varchar(200) DEFAULT NULL COMMENT '电话',
`mobile` varchar(200) DEFAULT NULL COMMENT '手机',
`user_type` char(1) DEFAULT NULL COMMENT '用户类型',
`photo` varchar(1000) DEFAULT NULL COMMENT '用户头像',
`login_ip` varchar(100) DEFAULT NULL COMMENT '最后登陆IP',
`login_date` datetime DEFAULT NULL COMMENT '最后登陆时间',
`login_flag` varchar(64) DEFAULT NULL COMMENT '是否可登录',
`create_by` varchar(64) NOT NULL COMMENT '创建者',
`create_date` datetime NOT NULL COMMENT '创建时间',
`update_by` varchar(64) NOT NULL COMMENT '更新者',
`update_date` datetime NOT NULL COMMENT '更新时间',
`remarks` varchar(255) DEFAULT NULL COMMENT '备注信息',
`del_flag` char(1) NOT NULL DEFAULT '0' COMMENT '删除标记',
PRIMARY KEY (`id`),
KEY `sys_user_office_id` (`office_id`),
KEY `sys_user_login_name` (`login_name`),
KEY `sys_user_company_id` (`company_id`),
KEY `sys_user_update_date` (`update_date`),
KEY `sys_user_del_flag` (`del_flag`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='用户表';
/*!40101 SET character_set_client = @saved_cs_client */;