Mariadb: "mysql Ver 15.1 Distrib 10.3.8-MariaDB"
OS: Windows 10 64 bit

Я боролся с получением файла данных csv, который содержит «старшие 8-битные» символы, такие как микронный символ и их тире, считанные в таблицу в mariadb с помощью "load data infile".

База данных, таблицы и столбцы настроены на utf8.

После многих попыток я загружал файл неуклюже, используя внешнюю программу (Notepad++) для преобразования файла csv из исходной кодировки ANSI Codepage 1252 (cp1252) в utf8 и вручную используя "set names utf8" в клиенте mysql. ,

Однако у меня возникли проблемы с настройкой в качестве конфигурации по умолчанию для программы.

После прочтения документации Mariadb (Mdb) я настроил my.cnf как

# Set everything to utf8 (utfmb3 I believe?)
[server]
character_set_server        = utf8
character_set_connection    = utf8
default-collation           = utf8_general_ci
init-connect                = 'SET NAMES utf8'

[client]
character_set_client        = utf8
character_set_connection    = utf8

но клиент mysql подавляет два варианта клиента с ошибками

mysql: unknown variable 'character_set_client=utf8'
mysql: unknown variable 'character_set_connection=utf8'

1 ответ1

0

Примечание. Исходное изменение перенесено в ответ.

Я нашел правильное заклинание

[client]
default_character_set=utf8mb4

[mysql]
default_character_set=utf8mb4

[mysqld]
character_set_server = utf8mb4
collation_server = utf8mb4_unicode_ci
init_connect='SET NAMES utf8mb4'

Это похоже на работу. Я все еще не понимаю, почему то, что похоже на клиентские или ориентированные на соединение переменные конфигурации, не принимается клиентом mysql.

mysql: unknown variable 'character_set_client=utf8'
mysql: unknown variable 'character_set_connection=utf8'

- UPDATE-- После обновления Mariadb до версии 10.3.12 это, похоже, снова частично сломалось.

С той же самой настройкой файла конфигурации, как выше, клиент mysql теперь сообщает

mysql -e "show variables where variable_name like '%char%' or variable_name like '%coll%';"
+--------------------------+-----------------------------------------------+
| Variable_name            | Value                                         |
+--------------------------+-----------------------------------------------+
| character_set_client     | utf8mb4                                       |
| character_set_connection | utf8mb4                                       |
| character_set_database   | utf8mb4                                       |
| character_set_filesystem | binary                                        |
| character_set_results    | utf8mb4                                       |
| character_set_server     | latin1                                        |
| character_set_system     | utf8                                          |
| character_sets_dir       | C:\Program Files\MariaDB 10.3\share\charsets\ |
| collation_connection     | utf8mb4_general_ci                            |
| collation_database       | utf8mb4_general_ci                            |
| collation_server         | latin1_swedish_ci                             |
+--------------------------+-----------------------------------------------+

Настройки для character_set_server и collation_server вернулись к значениям по умолчанию. Я могу изменить эти настройки индивидуально через клиент MySQL для каждой сессии, но системные настройки по умолчанию игнорируют настройки в файле конфигурации.

Если v10.3.12 не изменил некоторые правила для переменных конфигурации, это, кажется, новая проблема с этой версией.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .