SQL unique varchar case sensitivity question
Próbuję wypełnić tabelę SQL listą słów. Sama tabela jest dość prosta:
CREATE TABLE WORDS(
ID BIGINT AUTO_INCREMENT,
WORD VARCHAR(128) NOT NULL UNIQUE,
PRIMARY KEY(ID)
);
Problem, na który wpadam jest taki: kiedy wykonuję następujące wstawki z powrotem do tyłu
INSERT INTO WORDS(WORD) VALUES('Seth');
INSERT INTO WORDS(WORD) VALUES('seth');
Druga wstawka nie powiodła się z naruszeniem ograniczeń ("Duplicate entry 'Seth' for key 'WORD'").
Jak sprawić, by ograniczenie UNIQUE
na WORD
uwzględniało wielkość liter?
3 answers
Wygląda na to, że mysql jest domyślnie niewrażliwe na wielkość liter:
Prawdopodobnie musisz utworzyć kolumnę z uwzględniającą wielkość liter kolacją (np. utf8_bin):
CREATE TABLE WORDS (
ID BIGINT AUTO_INCREMENT,
WORD VARCHAR(128) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL UNIQUE,
PRIMARY KEY(ID)
);
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-04-18 18:42:52
Domyślnie MySQL ignoruje różnice w wielkości liter i spacjach końcowych na varchar
.
Jeśli potrzebujesz rozróżniać wielkość liter, możesz zmienić tabelę na varchar(...) binary
.
Użyj show create table
, aby lepiej zrozumieć, w jaki sposób MySQL konwertuje to na pełną notację.
Jeśli musisz zwracać uwagę na spacje końcowe, a także uwzględniać wielkość liter, użyj varbinary
zamiast varchar
.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-06-01 16:14:53
Zrobiłem swój unikalny klucz varchar (1000). Zadziałało.
Po kilku próbach i błędach znalazłem coś większego lub równego 1100 varchar zawiedzie.
Dla wyjaśnienia nie próbowałem między 1001 a 1099.
Mam nadzieję, że to pomoże.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-10-06 02:25:57