Как установить character_set_database и collation_database в utf8 в my.ini?

Я много разбираюсь в этой проблеме. Подводя итог, это то, что выглядит мой my.ini:

sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES 

[client]
database = abcdef
user = root
password = XXXXXX
default-character-set = utf8

[mysql]
default-character-set=utf8

[mysqld]
character_set_server=utf8
max_connections = 200
init_connect='SET collation_connection = utf8_general_ci' 
init_connect='SET NAMES utf8' 

Когда я попадаю в mysql через cmd и выдает: show variables like "%character%";show variables like "%collation%";, это то, что я получил:

+--------------------------+---------------------------------+
| Variable_name            | Value                           |
+--------------------------+---------------------------------+
| character_set_client     | utf8                            |
| character_set_connection | utf8                            |
| character_set_database   | latin1                          |
| character_set_filesystem | binary                          |
| character_set_results    | utf8                            |
| character_set_server     | utf8                            |
| character_set_system     | utf8                            |
| character_sets_dir       | D:\env\MySQL5.6\share\charsets\ |
+--------------------------+---------------------------------+
8 rows in set (0.00 sec)

+----------------------+-------------------+
| Variable_name        | Value             |
+----------------------+-------------------+
| collation_connection | utf8_general_ci   |
| collation_database   | latin1_swedish_ci |
| collation_server     | utf8_unicode_ci   |
+----------------------+-------------------+

Я уже перезапустил службу MySQL, так что может кто-нибудь дать мне некоторое представление о том, как изменить character_set_database, а также collation_database на utf8? Большое спасибо.

Ответ 1

В действительности это не параметр в my.cnf (или my.ini в этом случае). mySQL получает этот параметр из собственной сортировки базы данных (когда она была создана). Чтобы получить эту встроенную кодировку utf8, сделайте следующее:

ALTER DATABASE databasename CHARACTER SET utf8 COLLATE utf8_general_ci;

затем выполните перезапуск на mysql (не помните, если это необходимо), а затем:

SHOW VARIABLES;

Все должно быть хорошо, Надеюсь, что это поможет!


сторона примечания: я думаю, что default-character-set устарел сейчас (mySQL 5.5+) и, похоже, делает файл конфигурации неустойчивым.

Ответ 2

Как настроить Character Set и Collation.

Для приложений, которые хранят данные с использованием набора символов MySQL по умолчанию и сортировка (latin1, latin1_swedish_ci), никакой специальной конфигурации должны быть необходимы. Если приложения требуют хранения данных, используя различный набор символов или сортировку, вы можете настроить набор символов информации несколькими способами:

  • Укажите настройки символов для каждой базы данных. Например, гостиницы для использования одной базы данных может потребоваться utf8, тогда как приложения, которые использование другой базы данных может потребовать sjis.
  • Укажите настройки символа при запуске сервера. Это приводит к тому, что сервер использовать заданные настройки для всех приложений, которые не делают других меры.
  • Укажите настройки символа во время настройки, если вы создаете MySQL из источника. Это заставляет сервер использовать данные настройки для всех приложений, не указывая их при запуске сервера.

Примеры, показанные здесь для вашего вопроса, чтобы установить набор символов utf8, здесь также устанавливают сопоставление для более полезного (utf8_general_ci collation`).

Укажите настройки символов для каждой базы данных

  CREATE DATABASE new_db
  DEFAULT CHARACTER SET utf8
  DEFAULT COLLATE utf8_general_ci;

Укажите параметры символа при запуске сервера

[mysqld]
character-set-server=utf8
collation-server=utf8_general_ci

Задайте настройки символов в момент конфигурации MySQL

shell> cmake . -DDEFAULT_CHARSET=utf8 \
           -DDEFAULT_COLLATION=utf8_general_ci

Это может быть длинный ответ, но есть способ, который вы можете использовать. Надеюсь, мой ответ будет полезен для вас. для дополнительной информации http://dev.mysql.com/doc/refman/5.7/en/charset-applications.html

Ответ 3

Я делаю резюме:

определить, какие кодировки/сортировки доступны

SHOW CHARSET;
SHOW COLLATION;

проверить кодировку

SHOW VARIABLES LIKE '%character%';
SHOW VARIABLES LIKE '%collation%';

установить кодировку

[mysqld]
character-set-server=utf8
collation-server=utf8_general_ci

проверить базу данных/таблицу charset

SHOW CREATE DATABASE databasename;
SHOW CREATE TABLE tablename;

изменить кодировку базы данных/таблицы:

ALTER DATABASE databasename CHARACTER SET utf8 COLLATE utf8_general_ci;
ALTER TABLE tablename CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci;

установить при создании базы данных/таблицы:

CREATE DATABASE new_db CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
CREATE TABLE new_table (id INT) CHARSET utf8 COLLATE utf8_general_ci;