Подтвердить что ты не робот

Mysql: набор символов столбца

У меня есть существующая таблица, и я хочу преобразовать кодировку только для одного конкретного столбца в utf-8.

Я знаю, что эта команда ALTER TABLE table_name CONVERT TO CHARACTER SET utf8 делает это для всей таблицы, но я ищу команду, специфичную для столбца.

Есть ли для этого команда?

4b9b3361

Ответ 1

Попробуйте следующее:

ALTER TABLE t MODIFY col1 CHAR(50) CHARACTER SET utf8;

Ответ 2

Я разделяю это, это всегда может помочь... Я недавно изменил базу данных; переход от utf8 к utf8mb4; вот сценарий, который позволил мне сгенерировать изменения...

Сгенерируйте команды SQL для изменения таблиц:

SELECT CONCAT("ALTER TABLE '",'TABLE_NAME',"' DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;") 
FROM 'information_schema'.'TABLES' 
WHERE 'TABLE_SCHEMA' = 'xxxx';

Создайте команды SQL для изменения каждого столбца:

SELECT CONCAT("ALTER TABLE '",'TABLE_NAME',"' MODIFY '",'COLUMN_NAME',"' ",COLUMN_TYPE," CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci ",IF('IS_NULLABLE'='YES', 'NULL', 'NOT NULL')," ",IF('COLUMN_DEFAULT' IS NOT NULL, CONCAT(" DEFAULT '", 'COLUMN_DEFAULT', "'"), ''),";") 
FROM 'information_schema'.'COLUMNS' 
WHERE 'TABLE_SCHEMA' = 'xxx' AND 'TABLE_NAME' = 'xxxx' AND ('CHARACTER_SET_NAME' IS NOT NULL OR 'COLLATION_NAME' IS NOT NULL);

Обратите внимание, что для внешних ключей и первичных ключей, которые устанавливают взаимосвязь, вам необходимо отключить проверку ключей foregin перед изменением столбца

SET FOREIGN_KEY_CHECKS=0;

и включите его позже.

SET FOREIGN_KEY_CHECKS=1;

Ответ 3

Ниже один работал на меня.

ALTER TABLE table_name   
MODIFY column_name VARCHAR(255) CHARACTER SET utf8 COLLATE utf8_unicode_ci;

Ответ 4

Этот работал для меня.

ALTER TABLE 'table_name' CHANGE 'column_name' 'column_name' TEXT CHARACTER SET utf8 COLLATE utf8mb4_unicode_ci;