MYSQL BUG: Дублирующая запись о Первичном / Уникальном. Если я вставлю слово, слово

Привет,
Я пытаюсь вставить в мою базу данных 2 разных слова с помощью PHP.

word <= *is the first*

Word <= *is the secound

Создать код:

CREATE TABLE `myWords_table` (
`myWords` VARCHAR(250) NOT NULL,
PRIMARY KEY (`myWords`)
)
COLLATE='utf8_general_ci'
ENGINE=InnoDB

SQL:

INSERT INTO myWords_table (myWords) VALUES ("word"),("Word")

ALSO to better show:

INSERT INTO myWords_table (myWords) VALUES ("word"),("WORD")

Error: Duplicate entry 'word' for key 'PRIMARY'

* Я также попробовал уникальный ключ.
Кажется, что MYSQL не может справиться с капиталом против малого

Не могли бы вы мне помочь?*

Обновление статуса

ОШИБКА — это не пробел, это заглавные и маленькие буквы.

2

Решение

Это не ошибка, а только то, как работает кодирование и mysql. Все зависит от того, какие кодировки вы используете для своего столбца Key, некоторые кодировки чувствительны к регистру, а другие нет. В вашем случае utf8_general_ci не учитывает регистр, что означает, что для сравнения слово = WORD = WoRd = …

Если вы используете кодировку utf8_bin, вы не должны найти такое поведение. Согласно следующему сценарию

CREATE TABLE `myWords_table` (
`myWords` VARCHAR(250) NOT NULL,
PRIMARY KEY (`myWords`)
)
COLLATE='utf8_bin'
ENGINE=InnoDB;
Query OK, 0 rows affected (0.80 sec)

INSERT INTO myWords_table (myWords) VALUES ("word"),("Word");
Query OK, 2 rows affected (0.09 sec)

select * from myWords_table;
+---------+
| myWords |
+---------+
| Word    |
| word    |
+---------+

В отличие от, когда вы используете utf8_general_ci

CREATE TABLE `myWords_table` (
`myWords` VARCHAR(250) NOT NULL,
PRIMARY KEY (`myWords`)
)
COLLATE='utf8_general_ci'
ENGINE=InnoDB;
Query OK, 0 rows affected (0.37 sec)

INSERT INTO myWords_table (myWords) VALUES ("word"),("Word");
ERROR 1062 (23000): Duplicate entry 'Word' for key 'PRIMARY'
0

Другие решения

Спасибо Джимми за этот ответ и всем, кто мне помогает.

MYSQL плохо MYSQL Workbench.

Запустите этот SQL:

alter table myWords_table change column myWords myWords varchar(250) CHARSET utf8 COLLATE utf8_bin;

ЛЮБЫЕ Идеи как предотвратить на будущее от этого?

Джиммис ответ:
Вы можете установить для сортировки базы данных значение utf8_bin, а затем любая созданная таблица, использующая сортировку по умолчанию, унаследует эту сортировку.

Спасибо всем за эту замечательную работу. Вы мне очень помогли !!

Greeces,

Sebstian

-1

По вопросам рекламы [email protected]