1

我用

mysqlbinlog -f -v --base64-output=DECODE-ROWS mysql-bin.00001 > res.000001

我的表有一列是 varbinary。所以 res.000001 像这样

### UPDATE db.tbl
### WHERE
###   @1=967540772
###   @2='\x10\x00c\x01\x00%...'
### SET
###   @1=967540772
###   @2='\x10\x001\x00\x00,...'

我发现binlog会将不可见字符转换为十六进制(例如"\n", "\r"),普通字符将直接打印(例如"%", "a")。有问题。如果这一列是"\x10",binlog 会输出"\x10"(我们称之为 case 1),如果这一列是这些 hex 也是 的字符"0x10",binlog 会输出"\x10"TOO(我们称之为 case 2)。所以我不能谈论这些字符串之间的区别。

在情况 1 中,我认为 binlog 应该输出"\x10"以转义反斜杠。这是mysql binlog的bug吗?

4

0 回答 0