Mysql
使用 Workbench 從 MSSQL 遷移到 MySQL 時出現“不正確的字元串值”
我的任務是將我們的 MSSQL 數據庫遷移到 MySQL 數據庫中。因此,我使用的是最新版本的 MySQL Workbench 和 FreeTDS Driver。
在遷移過程中,我總是遇到這樣的錯誤:
ERROR: `dbo`.`emails_text`:Inserting Data: Incorrect string value: '\xA0</td>...' for column 'description' at row 1 ERROR: `dbo`.`prospect_lists`:Inserting Data: Incorrect string value: '\xFCrs MB...' for column 'description' at row 4 ERROR: `dbo`.`campaigns`:Inserting Data: Incorrect string value: '\xFChrung...' for column 'name' at row 24
我認為 utf8 是麻煩製造者,但到目前為止我找不到任何解決我的問題的方法。
我必須執行以下操作:
在源配置(ODBC FreeTDS)中,選項卡“高級”,我設置:
TDS_VERSION=7.2;ClientCharset=UTF-8
並檢查“驅動程序將 Unicode 數據發送為 UTF-8”。(有關更多資訊,請訪問 http://www.freetds.org/userguide/odbcconnattr.htm)
然後,在目標配置中,選項卡“高級”,在文本框“其他”中,我添加了以下新行:(根據需要更改它,始終為 utf8* )
preInit=SET default_storage_engine=MYISAM,character_set_connection=utf8mb4,collation_connection=utf8mb4_spanish_ci,collation_server=utf8mb4_spanish_ci,character_set_server=utf8mb4
(有關更多資訊,請參閱: https ://dev.mysql.com/doc/refman/5.7/en/server-options.html https://dev.mysql.com/doc/refman/5.7/en/server-system -variables.html https://dev.mysql.com/doc/connector-cpp/en/connector-cpp-connect-options.html )
最後在數據複製步驟中,在選項組中選中“驅動程序發送已編碼為 UTF-8 的數據”。
其中哪一個看起來對 \xFC 是正確的?
armscii8 2 1 'Ֆ' cp1250, cp1256, cp1257, dec8, latin1, latin2, latin5, latin7 2 1 'ü' cp1251 2 1 'ь' cp850 2 1 '³' cp852 2 1 'Ř' greek 2 1 'ό' koi8r, koi8u 2 1 'Э' macce 2 1 'Ł' macroman 2 1 '¸' cp866, keybcs2 3 1 'ⁿ'
如果它們都沒有,那麼 MSSQL 正在生成未知垃圾。
\A0
在許多字元集中是“硬空白”。一些例外:cp850, cp852, keybcs2 2 1 'á' cp866 2 1 'а' koi8r, koi8u 3 1 '═' macce, macroman 3 1 '†'
您可以通過將有問題的列聲明為
CHARACTER SET latin1
並與垃圾一起生活,直到弄清楚該做什麼來繼續前進。你有更多壞角色的例子嗎?也許會出現一種模式。