私が使う
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 は非表示の文字を 16 進数に変換し (eg "\n", "\r"
)、通常の文字は直接出力されることがわかりました (eg "%", "a"
)。何かがおかしい。この列がの場合"\x10"
、binlog は出力します"\x10"
(ケース 1 と呼びます)。この列がこれらの 16 進数の文字でもある"0x10"
場合、binlog は"\x10"
TOO を出力します (ケース 2 と呼びます)。したがって、これらの文字列の違いについて話すことはできません。
"\x10"
ケース1の場合、バイナリログはバックスラッシュをエスケープするように出力する必要があると思います. これは mysql binlog のバグですか?