web-dev-qa-db-ja.com

データベースの作成時にMySQLの「character_set_server」および「照合サーバー」変数を設定するにはどうすればよいですか?

MySQL 5.5.37を使用しています。最初にデータベースを作成するときに、データベースのデフォルトの ""および ""変数を設定するにはどうすればよいですか? rootユーザーとしてログインしていますが、以下のようにコマンドで切り取られません。

mysql> create database if not exists my_db DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_bin;
Query OK, 1 row affected (0.00 sec)

mysql> use my_db
Database changed
mysql> SHOW VARIABLES WHERE Variable_name LIKE 'character\_set\_%' OR Variable_name LIKE 'collation%';
+--------------------------+-------------------+
| Variable_name            | Value             |
+--------------------------+-------------------+
| character_set_client     | utf8              |
| character_set_connection | utf8              |
| character_set_database   | utf8              |
| character_set_filesystem | binary            |
| character_set_results    | utf8              |
| character_set_server     | latin1            |
| character_set_system     | utf8              |
| collation_connection     | utf8_general_ci   |
| collation_database       | utf8_bin          |
| collation_server         | latin1_swedish_ci |
+--------------------------+-------------------+

Intiailコマンドで何を指定しても、「character_set_server」が「latin1」に設定され、「collat​​ion_server」が「latin1_swedish_ci」に設定されていることに注意してください。これらの値がそれぞれutf8とutf8_binになるように初期コマンドを変更するにはどうすればよいですか?

1
Dave
SET NAMES utf8mb4 COLLATE utf8mb4_unicode_520_ci;

CREATE DATABASEのデフォルトはCREATE TABLEを実行する場合にのみ役立つため、データベースを無視してCREATE TABLEを明示することに焦点を当てることをお勧めします。

2
Rick James

これらをMySQL構成ファイルの[mysqld]セクションに貼り付けます。

skip-character-set-client-handshake
collation-server=utf8_unicode_ci
character-set-server=utf8

このドキュメントは here です。

1
Philᵀᴹ