При запуске SHOW CREATE TABLE `my_table`;
я замечаю, что COLLATE utf8mb4_unicode_ci
отображается для каждого столбца char
, varchar
и text
в таблице. Это кажется немного избыточным, поскольку параметры сортировки уже объявлены в части table_option оператора create.
mysql> SHOW CREATE TABLE `my_table`;
| Table | Create Table
| my_table | CREATE TABLE `my_table` (
...
`char_col_1` char(15) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL,
`varchar_col_1` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL,
`varchar_col_2` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL,
`varchar_col_3` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL,
`text_col_1` text CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci
...
) ENGINE=InnoDB AUTO_INCREMENT=1816178 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci
Это поведение заметно как в MySQL 5.7, так и в MySQL 8.0. и, следовательно, скорее всего, и в других версиях.
Является ли это поведение нормальным и приемлемым, или это признак того, что что-то неправильно настроено либо для таблицы, базы данных, либо для экземпляра MySQL?
С другой стороны, поскольку параметры сортировки могут быть индивидуально установлены для любого определенного столбца c, возможно, лучше явно отображать параметры сортировки для каждого столбца, чтобы избежать двусмысленности или допущений даже в тех случаях, когда параметры сортировки столбца совпадают. сопоставление таблицы?