2016-11-12 11 views
1

テーブルの照合タイプをunicodeからgeneralに変換しようとしていますが、mysqlはそれを許可していません。エラーは返されませんが、テーブルを見ると変更が行われていないことがわかります。mysqlは照合タイプを変更できません

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

mysql> show create table abc; 
+----------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ 
| Table | Create Table                                                  | 
+----------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ 
| abc_test | CREATE TABLE `abc` (
    `id` int(11) NOT NULL AUTO_INCREMENT, 
    `somecolumn` bigint(20) DEFAULT NULL, 
    PRIMARY KEY (`id`) 
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci ROW_FORMAT=DYNAMIC | 
+----------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ 
1 row in set (0.01 sec) 

mysql> alter table abc convert to charset utf8 collate utf8_general_ci; 
Query OK, 0 rows affected (0.01 sec) 
Records: 0 Duplicates: 0 Warnings: 0 

mysql> show create table abc; 
+----------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ 
| Table | Create Table                                                  | 
+----------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ 
| abc_test | CREATE TABLE `abc` (
    `id` int(11) NOT NULL AUTO_INCREMENT, 
    `somecolumn` bigint(20) DEFAULT NULL, 
    PRIMARY KEY (`id`) 
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci ROW_FORMAT=DYNAMIC | 
+----------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ 
1 row in set (0.00 sec) 
+0

http://bugs.mysql.comでバグレポートを提出することをお勧めします。 –

答えて

2

ちょうどこのALTER TABLE table_name COLLATE='utf8_general_ci';

あなたのテーブルが既にUTF8 charsetを持っているように変更します。だから私の意見では、もう一度設定する必要はありません。私はあなたがあなたの変更クエリでそれを再びcharset utf8に変換しようとしているのを見ることができます。

+0

ありがとうございます...なぜこれは機能しますか? – user3299633

+0

私はその理由を追加しました。 –

+0

@ user3299633、それがうまくいくならコミュニティを助けるために受け入れられたとして私の答えをマークしてください。 –

0

私はmysql 5.7.18を試してみました。どのバージョンを使用していますか?

私はあなたと同じ照合変数を設定し、テーブルを作成し、上からコピーした文で照合を変更します。そして最後に私が得た:utf8_general_ciがUTF8のデフォルトの照合であるため、

mysql> show create table abc; 
+-------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ 
| Table | Create Table                                              | 
+-------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ 
| abc | CREATE TABLE `abc` (
    `id` int(11) NOT NULL AUTO_INCREMENT, 
    `somecolumn` bigint(20) DEFAULT NULL, 
    PRIMARY KEY (`id`) 
) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8 ROW_FORMAT=DYNAMIC | 
+-------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ 
1 row in set (0.01 sec) 

mysql> select version(); 
+--------------+ 
| version() | 
+--------------+ 
| 5.7.18-debug | 
+--------------+ 

「SHOWは、CREATE TABLE」を照合情報を印刷しません。

関連する問題