wake-up-neo.com

Mysql: Setze den Zeichensatz der Spalte

Ich habe eine vorhandene Tabelle und möchte den Zeichensatz nur für eine bestimmte Spalte in utf-8 konvertieren.

Ich weiß, dass dieser Befehl ALTER TABLE table_name CONVERT TO CHARACTER SET utf8 für die gesamte Tabelle gilt, aber ich suche nach einem spaltenspezifischen Befehl. 

Gibt es dafür einen Befehl?

35
Subway

Versuche dies:

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

Ich teile das, es kann immer helfen ... Ich habe kürzlich eine Datenbank geändert; Wechsel von utf8 zu utf8mb4; Hier ist das Skript, mit dem ich die Änderungen generieren konnte.

Ändern Sie die Tabelle:

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

Ändern Sie jede Spalte:

SELECT CONCAT("ALTER TABLE `",`TABLE_NAME`,"` CHANGE `",`COLUMN_NAME`,"` `",`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);
5
Abdel

Dieser hat für mich gearbeitet.

ALTER TABLE `table_name` CHANGE `column_name` `column_name` TEXT CHARACTER SET utf8 COLLATE utf8mb4_unicode_ci; 
0
Rishab

Unten arbeitete ich für mich.

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