#mysql
#mysql
Вопрос:
У меня такой вопрос: есть ли кодировка с учетом регистра, которую я могу вставить по умолчанию для таблиц MySQL? Потому что я хотел бы, чтобы атрибут username в таблице user учитывал регистр. Я пробовал использовать некоторую кодировку с учетом регистра (например, latin1_general_cs), но база данных, похоже, не находит эту кодировку, поэтому теперь для нее установлено значение utf8mb4 (но если я изменю кодировку вручную после вставки таблицы, я могу выбирать между многими кодировками, некоторые из которых чувствительны к регистру). Но я хотел бы установить кодировку с учетом регистра по умолчанию, иначе у меня возникли бы некоторые проблемы при создании внешних ключей в имени пользователя атрибута (например, в корзине таблиц).
DROP TABLE IF EXISTS `users`;
CREATE TABLE `users`(
`username` varchar(20) NOT NULL DEFAULT 'user',
`password` varchar(32) NOT NULL DEFAULT '0000',
`email` varchar(30) NOT NULL DEFAULT 'email',
`residenza` varchar(50) DEFAULT 'sconosciuto',
PRIMARY KEY(`username`)
)ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE utf8_bin;
DROP TABLE IF EXISTS `cart`;
CREATE TABLE `cart`(
`username` varchar(20) NOT NULL DEFAULT 'user',
`titolo` varchar(50) NOT NULL DEFAULT 'sconosciuto',
`numero` int NOT NULL DEFAULT 0,
PRIMARY KEY(`username`, `titolo`),
FOREIGN KEY(`username`) REFERENCES `users`(`username`),
FOREIGN KEY(`titolo`) REFERENCES `cd`(`titolo`)
)ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
Комментарии:
1. Попробуйте добавить
COLLATE utf8_bin
в определение таблицы. dev.mysql.com/doc/refman/5.7/en/charset-table.html2.но база данных, похоже, не находит эту кодировку
select * from information_schema.collations;
3. @Dmitry Я обновил свой вопрос с вашим предложением, но база данных показывает мне эту ошибку: ПАРАМЕТР СОРТИРОВКИ ‘utf8_bin’ недопустим для НАБОРА СИМВОЛОВ ‘utf8mb4’
4. база данных показывает мне, например,
latin1_general_cs
но если я вставлю это по умолчанию, я получу эту ошибку:Unknown character set: 'latin1_geenral_cs'
я вижу опечатку. И всегда проверяйте, что параметры сортировки соответствуют кодировке.5. Хорошо, я не заметил, что вы используете тип mb4. Затем попробуйте
COLLATE utf8mb4_bin