2016-09-29 54 views
1

我有一個來自客戶的錯誤元音的mysqldump。 這是一個備份,我沒有得到一個新的。帶有錯誤元音的mysqldump - 搜索和替換?

例如,不是ü,而是ö,而不是ö有ö。

爲了解決這個問題,我可以在記事本中進行搜索和替換嗎?或者,我可以損壞其他表格而不是tt_content或具有全局搜索和替換的頁面嗎?

回答

3

我通過出口和進口用不同字符集的配置解決了這個。 只需在您的本地開發服務器上導入您現有的mysql轉儲,然後按照以下步驟嘗試導出/導入。 創建一個新的MySQL轉儲和嘗試像一些設置:

mysqldump --default-character-set=latin1 --skip-set-charset --skip-extended-insert --skip-add-drop-table --no-create-info -u [USERNAME] -p [DBNAME] > [MYSQLDUMNAME].sql 

導入新創建MySQL的轉儲,像設置:

mysql --default-character-set=utf8 -u [USERNAME] -p [DBNAME] < [MYSQLDUMNAME].sql 

您將需要一些測試,以找出正確的轉換(LATIN1 ,UTF8)。

如果你在你的MySQL轉儲正確和不正確字符的混合,你可能會排除這樣的表,然後逐一導入,如:

mysqldump --default-character-set=latin1 --skip-set-charset --skip-extended-insert --add-drop-table --ignore-table=[DBNAME].[TABLENAME] -u [USERNAME] -p [DBNAME] > [MYSQLDUMNAME].sql 

替換[用戶名],[數據庫],[TABLENAME ],[MYSQLDUMNAME]和你的值。

1

這主要是由用於轉儲備份的錯誤編碼設置引起的(例如,當數據庫在cp-1252中時,在utf-8中與服務器通信)。如果您可以獲取用於創建設置的設置,則可以使用正確的設置將其導入本地計算機,並使用正確的設置創建一個新的轉儲以修復它。

你可以嘗試用搜索替換來修復它,但是你可能會錯過很多符號,除非它真的是小轉儲,事後你可以完全手動檢查它。