Всяка колона (тип символен низ). има свой собствен набор от знаци и метаданни за съпоставяне.
Ако, когато вколоната Типът данни на ' е посочен (т.е. кога е бил последно създаден или променен), не е даден изрично набор от знаци/съпоставяне, тогава за колоната ще се използва наборът от символи по подразбиране и съпоставянето на таблицата.
Ако, когато намасата е посочено, не е бил изрично даден набор от символи/съпоставяне по подразбиране, тогава наборът от символи по подразбиране и съпоставянето на базата данни ще бъдат използвани за стандартните за таблицата.
Командите, които цитирате във вашия въпрос, просто променят такива набори от символи/съпоставяния по подразбиране за базата данни и съответно таблицата. С други думи, те ще засегнат само таблици и колони, които са създадени след това – те не засягат съществуващите колони (или данни).
За да актуализирате съществуващите данни, първо трябва да прочетете Промяна на набора от знаци
раздел на страницата с ръководството на ALTER TABLE
:
За да промените само по подразбиране набор от символи за таблица, използвайте този израз:
ALTER TABLE tbl_name DEFAULT CHARACTER SET charset_name;
Думата DEFAULT
е по избор. Знаковият набор по подразбиране е наборът от знаци, който се използва, ако не посочите набора от знаци за колони, които добавяте към таблица по-късно (например с ALTER TABLE ... ADD column
).
Когато foreign_key_checks
системната променлива е активирана, което е настройката по подразбиране, преобразуването на набор от знаци не е разрешено в таблици, които включват колона от символен низ, използвана в ограничение за външен ключ. Заобиколното решение е да деактивирате foreign_key_checks
преди да извършите преобразуване на набора от знаци. Трябва да извършите преобразуването и на двете таблици, включени в ограничението на външния ключ, преди да активирате повторно foreign_key_checks
. Ако активирате повторно foreign_key_checks
след конвертиране само на една от таблиците, ON DELETE CASCADE
или ON UPDATE CASCADE
операцията може да повреди данните в референтната таблица поради имплицитно преобразуване, което се случва по време на тези операции (Бъг #45290, Бъг #74816).