2016-11-12 4 views
1

Ich versuche, meine Tabelle Collation-Typ von Unicode zu allgemeinen konvertieren, aber mysql erlaubt es nicht. Es werden keine Fehler zurückgegeben, aber wenn ich die Tabelle anschaue, kann ich sehen, dass keine Änderungen vorgenommen werden.mysql lässt mich Kollationstyp nicht ändern

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

Empfehlen Sie die Einreichung eines Fehlerberichts unter http://bugs.mysql.com –

Antwort

2

Verwenden Sie einfach ändern wie diese ALTER TABLE table_name COLLATE='utf8_general_ci';

Ihr Tisch bereits UTF8 charset hat. Also, Meiner Meinung nach müssen Sie es nicht erneut einstellen. Ich kann sehen, dass Sie versuchen, es mit Ihrer Alter-Abfrage wieder in den Zeichensatz utf8 zu konvertieren.

+0

Danke ... Warum funktioniert das, aber nicht meine Aussage? – user3299633

+0

Ich habe den Grund hinzugefügt. –

+0

@ user3299633, wenn es funktioniert, dann markiere meine Antwort als akzeptiert, um der Community zu helfen. –

0

Ich versuchte mit mysql 5.7.18, und alles sieht gut aus. Welche Version verwendest du?

Ich legte die Kollatierungsvariablen gleich wie Ihre, und erstellte Tabelle und ändern Sie die Kollatierung durch die Anweisungen von oben kopiert. Und endlich bekam ich:

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 | 
+--------------+ 

Die „SHOW CREATE TABLE“ Sortierungs Informationen nicht drucken, weil utf8_general_ci die Sortierung von UTF-8 Standard ist.

Verwandte Themen