2016-11-12 6 views
1

Я пытаюсь преобразовать свой тип сортировки таблицы из Unicode в общий, но 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, и все выглядит просто отлично. Итак, какую версию вы используете?

Я установил переменные сортировки такими же, как ваши, и создал таблицу и изменил сортировку с помощью операторов, скопированных сверху. И наконец, я получил:

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» не печатает сортировки информации, поскольку utf8_general_ci является сверка по умолчанию utf8.

Смежные вопросы