Я новичок в MySQL и переношу клиентскую базу данных MS SQL Server 2008 R2 на Windows Server 2008 R2 на MySql Ver 8.0.11 для Win64 на x86_64 (MySQL Community Server - GPL) на Windows 2016 Server с использованием MySql Workbench 8.0 инструмент переноса, копирующий данные с помощью опции Online copy of table table to target RDBMS.
Я получаю предупреждения о всех столбцах SQL Server varchar и ntext о том, что «Collation SQL_Latin1_General_CP1_CI_AS перенесен в utf8_general_ci», но это только проблема с таблицей с двумя столбцами ntext. Эта таблица не может перенести данные с ошибкой «неверное строковое значение:« \ xF4 \ x80 \ x82 \ x83 ... ».
Хотя я немного запутался в наборах символов и сопоставлениях, мое исследование Интернета указывает на то, что проблема в том, что в MySQL utf8 допускает только 3 байта, и мне нужно переместить эти данные в utf8mb4, который допускает 4 байта.
Я изменил файл my.ini следующим образом:
[client]
default-character-set=utf8mb4
[mysql]
default-character-set=utf8mb4
[mysqld]
character-set-server=utf8mb4
character-set-client-handshake = FALSE
collation-server = utf8mb4_unicode_ci
Это приводит к тому, что следующие значения переменных для character_set_ * являются (в основном) utf8mb4, за исключением символьной_системы, которая остается utf8, и character_set_filesystem двоичной. Переменные параметров сортировки: utf8mb4_unicode_ci:
Набор символов и параметры сортировки
Кажется, инструмент миграции игнорирует это? Кто-нибудь знает, как я могу переместить эти данные без изменений, желательно с помощью простого в использовании инструмента миграции? (Имея в виду, что моя неопытность в этой среде означает, что мне нужна довольно явная помощь). Спасибо!