Mysql
MySQL dump-restore 用 3Fh 替換字元
帶有 Mysql 和 make.conf 的 FreeBSD 伺服器
.if ${.CURDIR} == ${PORTSDIR}/databases/mysql50-server WITH_CHARSET=cp1251 WITH_COLLATION=cp1251_bin BUILD_OPTIMIZED=yes BUILD_STATIC=yes .endif .if ${.CURDIR} == ${PORTSDIR}/databases/mysql50-client WITH_CHARSET=cp1251 WITH_COLLATION=cp1251_bin BUILD_OPTIMIZED=yes .endif
我有這種結構的mysql表
mysql> show create table phpbb_bt_torrents\G *************************** 1. row *************************** Table: phpbb_bt_torrents Create Table: CREATE TABLE `phpbb_bt_torrents` ( `info_hash` char(20) CHARACTER SET cp1251 COLLATE cp1251_bin NOT NULL DEFAULT '', ) ENGINE=InnoDB AUTO_INCREMENT=128511 DEFAULT CHARSET=cp1251
我在晚上備份它
mysqldump --quote-names --add-drop-table db>db.sql
mysql < db.sql
如果我在同一台伺服器上恢復備份,那麼我得到的數據並不完全相同,例如:
SELECT hex(info_hash) FROM phpbb_bt_torrents
8CB0701A0C8B7D976538 88 E8B959A6420AEC7679 恢復後變為 8CB0701A0C8B7D976538 3F E8B959A6420AEC7679
A9 98 6D2E961E1F407E74E9D18D811DDB702924F5 恢復後變為 A9 3F 6D2E961E1F407E74E9D18D811DDB702924F5
等等…我注意到只有 88h 和 98h 字元會損壞,但可能還有更多。
有沒有辦法備份和恢復數據而不會損壞?
從那裡解決方法:
指定選項 –default-character-set=cp1251。但是這種解決方法不適用於具有混合字元集的測試案例
您可以嘗試使用“mysqldump –opt …”進行轉儲然後恢復它嗎?
在同一台伺服器上應該不會有什麼不同,只是為了確保這不是某些使用者特定的配置。