Я настроил php-mysql-apache для работы на latin1, но при выполнении резервного копирования мой клиент с набором символов по-прежнему utf8 - PullRequest
1 голос
/ 08 октября 2010

Да, я знаю, что вы думаете, но на данный момент мы решили перейти на латынь1.

Это конфигурация mySQL: • mysql> SHOW VARIABLES LIKE 'character_set _%';
• + -------------------------- + -------- +
• | Переменное_имя | Значение |
• + -------------------------- + -------- +
• | character_set_client | latin1 |
• | character_set_connection | latin1 |
• | набор персонажей | latin1 |
• | character_set_results | latin1 |
• | character_set_server | latin1 |
• | character_set_system | utf8 |> Это невозможно изменить, поскольку это системный параметр по умолчанию.

Для php мы используем следующие команды в php.ini:
mssql.charset = "ISO-8859-1"

Для апача обычный:
AddDefaultCharset ISO-8859-1

Со всем этим каждый раз, когда мы выполняем резервное копирование, к каждой таблице добавляется следующее:
/ *! 40101 SET @saved_cs_client = @@ character_set_client /;
/
! 40101 SET character_set_client = utf8 * /;

Почему character_set_client все еще находится в utf8 для соединений между apache / php и mysql?

Ответы [ 2 ]

3 голосов
/ 09 октября 2010

mysqldump не смотрит на ваши настройки php или apache. Вам необходимо добавить флаг --default-character-set при использовании mysqldump.

Из руководства :

- по умолчанию-символьный набор = charset_name

Использовать charset_name по умолчанию набор символов. Смотрите Раздел 9.5, «Настройка набора символов». Если нет указан набор символов, mysqldump использует utf8, а более ранние версии используют latin1.

0 голосов
/ 19 октября 2011

, если вы внимательно обратите внимание на указанную в php.ini директиву:

mssql.charset = "ISO-8859-1"

относится к Microsoft SQL Server! соединениям, а не к MySQL Server.

Джекман

...