mysqlbinlog生成sql语句时,\0字符串引发的问题
时间:2011-12-09
来源:互联网
CREATE TABLE `x` (
`msg` varchar(256) NOT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1
-------------------
【c++,using mysqlpp】
C/C++ code
---------------------
SQL code
--------------------------
mysqlbinlog生成的sql语句
SQL code
--------------------------
问题来了,
这样执行mysqlbinlog mysql-bin.000xx | mysql
这样的语句直接用mysql执行会出现语法错误(那个^@,也就是\0)把字符串截断了,于是出现语法错误
请问怎样让mysqlbinlog生成正确的经过转义的sql语句呢(将^@变成字符串"\0")?或者让mysql在执行的时候可以支持中间为\0的字符串?
`msg` varchar(256) NOT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1
-------------------
【c++,using mysqlpp】
C/C++ code
string insertSQL = string("insert into test.x values('\0\0hello')"); //字符串里面有\0字符 query << insertSql; SimpleResult res; conn.execute(res,query);
---------------------
SQL code
mysql> select * from test.x; +---------+ | msg | +---------+ | hello | +---------+ 1 row in set (0.00 sec) mysql> select hex(msg) from test.x; +----------------+ | hex(msg) | +----------------+ | 000068656C6C6F | +----------------+ 1 row in set (0.00 sec)
--------------------------
mysqlbinlog生成的sql语句
SQL code
insert into test.x values('^@^@hello'); /* 注意^@是vi显示的结果,用hexdump查看ASCII为0 */
--------------------------
问题来了,
这样执行mysqlbinlog mysql-bin.000xx | mysql
这样的语句直接用mysql执行会出现语法错误(那个^@,也就是\0)把字符串截断了,于是出现语法错误
请问怎样让mysqlbinlog生成正确的经过转义的sql语句呢(将^@变成字符串"\0")?或者让mysql在执行的时候可以支持中间为\0的字符串?
作者: nofreezou 发布时间: 2011-12-09
你是在什么中执行? C中还是MYSQL命令行工具中?
作者: ACMAIN_CHM 发布时间: 2011-12-09
引用 1 楼 acmain_chm 的回复:
你是在什么中执行? C中还是MYSQL命令行工具中?
你是在什么中执行? C中还是MYSQL命令行工具中?
mysql命令行中执行,类似这样的命令“mysqlbinlog mysql-bin.xx| mysql”
通过mysqlbinlog读取binlog文件,生成sql,然后用mysql执行
作者: nofreezou 发布时间: 2011-12-09
我现在通过字符串替换把^@ (hex(0)) 的手动替换成\0(hex(5C30))可以完成导入,不知道是否还有更妥当的方法?
作者: nofreezou 发布时间: 2011-12-09
mysql4.1版本?
我也出现过binlog生成的就是不对的,后来只好迁移到高版本的mysql上
我也出现过binlog生成的就是不对的,后来只好迁移到高版本的mysql上
作者: rucypli 发布时间: 2011-12-09
相关阅读 更多
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28