Почему mysql 4 не учитывает аргументы команд --character_set_results и --default-character-set? - PullRequest
2 голосов
/ 28 июня 2011

У меня есть таблица 'ABC' (charset = utf8), и это мои значения переменных набора символов
[mysql версия 4.1.23 - сервер] и версия клиента - 3.23.57


mysql> show variables like 'character%';<br/>
+--------------------------+------------------------------------+
| Variable_name            | Value                              |
+--------------------------+------------------------------------+
| character_set_client     | latin1                             |
| character_set_connection | latin1                             |
| character_set_database   | latin1                             |
| character_set_results    | latin1                             |
| character_set_server     | latin1                             |
| character_set_system     | utf8                               |
| character_sets_dir       | /home/y/share/mysql/charsets/      |
+--------------------------+------------------------------------+
7 rows in set (0.00 sec)

Теперь, если я выполню запрос в клиенте mysql

mysql>select * into outfile '/tmp/a' from ABC;
Query OK, 26 rows affected (0.00 sec)

и проверьте тип файла / tmp / a

[satyavrk-~]$: file /tmp/a
/tmp/a:UTF-8 Unicode text

Q1) Поскольку мой character_set_results - латиница 1, как тип файла / tmp / a - UTF-8 вместо текста латиницы 1 или ISO-8859 на английском языке?

В качестве альтернативы, если я бегу

[satyavrk-~]$:  mysqldump -uroot  --databases my --tables ABC  --default-character-set=utf8 > 63794

и сделать

[satyavrk-~]$: file 63794
63794: ISO-8859 English text, with very long lines

Q2) Так как я указал --default-set-set как UTF-8, набор результатов должен быть utf8. Но это не так! Почему?

В обоих случаях тип файла отличается от ожидаемого

Может ли кто-нибудь объяснить, по чему я скучаю

Ответы [ 2 ]

0 голосов
/ 28 июля 2011

Полагаю, проблема в клиенте mysql.Если я попытаюсь сделать то же самое с клиентом MySQL версии 4.вторая проблема решена!

В документации, доступной по адресу dev.mysql.com/doc/refman/5.0/en/select.html, сказано: «SELECT ... INTO OUTFILE является дополнением LOAD DATA INFILE.Значения столбцов выводятся с использованием двоичного набора символов. По сути, преобразование набора символов не выполняется. Если таблица содержит столбцы в нескольких наборах символов, файл выходных данных также будет, и вы не сможете правильно загрузить файл. "Это означает, что он не читает символьный_символ.

0 голосов
/ 05 июля 2011

SET NAMES удобно и, вероятно, именно то, что вам нужно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...