2016-12-14 3 views
1

私はすべてのデフォルトをutf8にします。私はthis questionをチェックしましたが何も助けません。Mysql 5.5どのようにutf8にすべてを設定するには?

現在、私の/etc/my.cnf

[mysqld] 
collation-server = utf8_unicode_ci 
init-connect='SET NAMES utf8' 
character-set-server = utf8 

あるしかし、私は、サーバーを再起動すると、新しいデータベースを作成し、それはまだlatin1のである(character_set_databasecharacter_set_server):

mysql> show variables like 'char%'; 
+--------------------------+----------------------------+ 
| 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  | latin1      | 
| character_set_system  | utf8      | 
| character_sets_dir  | /usr/share/mysql/charsets/ | 
+--------------------------+----------------------------+ 
8 rows in set (0.00 sec) 

mysql> show variables like 'collation%'; 
+----------------------+-------------------+ 
| Variable_name  | Value    | 
+----------------------+-------------------+ 
| collation_connection | utf8_general_ci | 
| collation_database | latin1_swedish_ci | 
| collation_server  | latin1_swedish_ci | 
+----------------------+-------------------+ 
3 rows in set (0.00 sec) 

私はデータベースを作成するとき、それはlatin1です:

mysql> create database d1; 
Query OK, 1 row affected (0.00 sec) 

mysql> use d1; 
Database changed 
mysql> show variables like "character_set_database"; 
+------------------------+--------+ 
| Variable_name   | Value | 
+------------------------+--------+ 
| character_set_database | latin1 | 
+------------------------+--------+ 
1 row in set (0.00 sec) 

私はテーブルを作成するとき私はalter database d1 character set utf8;は、この問題を解決することがわかっている

mysql> create table t1(name varchar(1) default '啊'); 
ERROR 1067 (42000): Invalid default value for 'name' 

:このデータベースには、それが有効なUTF8 を認識することはできません。しかし、私はちょうどすべてのデフォルトのutf8、それは可能ですか?

+0

によって明示的にグローバル設定を照会しようとするあなたは= UTF8 – Seb

+0

@Sebそうではなく – tcpiper

答えて

1

これは扱いにくいです。

デフォルトのデータベースの文字セットと照合がcharacter_set_databasecollation_databaseシステム変数の値から を求めることができます。デフォルトのデータベースが変更されると、サーバはこれらの変数を に設定します。デフォルトの データベースがない場合、変数は対応する サーバーレベルシステム変数と同じ値を持ちます。character_set_servercollation_serverです。

したがって、collation-databaseのデフォルトは、collation-server変数のデフォルトと同じです。

次のことを確認してください:

  1. はあなたのmy.cnfを上書きする任意の他の設定は/etc/mysql/mysql.cnfまたは~/.my.cnfのように、ありますか?

  2. クライアント(サーバーではなく!)あなたが[mysql](ないmysqld)を介してクライアントの照合/エンコーディングを設定するか、これはすでにどこかに設定されている場合は見ることができるので、起動時に独自の照合を設定しています。あなたはSHOW VARIABLES ...

  3. - これはSESSIONベースの変数を照会している、SHOW GLOBAL VARIABLES ...

+0

はヘルプデフォルトの文字セットみましたそれは次のようなものです: '[mysql] collat​​ion-server = utf8_unicode_ci character-set-server = utf8'? – tcpiper

+0

http://dev.mysql.com/doc/refman/5.7/en/charset-connection.html – DanFromGermany

関連する問題