SQLinfo.ru - Все о MySQL

Форум пользователей MySQL

Задавайте вопросы, мы ответим

Вы не зашли.

#1 02.03.2011 16:12:55

elslepas
Участник
Зарегистрирован: 31.10.2010
Сообщений: 16

Duplicate entry

Добрый вечер! Возникла проблема с добавлением информации в таблицу

REATE TABLE IF NOT EXISTS `z_type_room` (
  `flag_admin` int(11) NOT NULL,
  `id_firm` int(11) NOT NULL,
  `id_firm_type_room` varchar(200) COLLATE utf8_unicode_ci NOT NULL,
  `id_type_room` int(11) NOT NULL,
  `type_room` varchar(200) COLLATE utf8_unicode_ci NOT NULL,
  UNIQUE KEY `id_firm` (`id_firm`,`id_firm_type_room`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;

При таком вот запросе


INSERT INTO `tourshow_firms`.`z_type_room` (
`flag_admin` ,
`id_firm` ,
`id_firm_type_room` ,
`id_type_room` ,
`type_room`
)
VALUES
('', '123', 'Standard', '', ''),
('', '123', 'standard', '', '')


Получаю вот такую ошибку

#1062 - Duplicate entry '123-standard' for key 'id_firm'

Неактивен

 

#2 02.03.2011 20:25:58

vasya
Архат
MySQL Authorized Developer
Откуда: Орел
Зарегистрирован: 07.03.2007
Сообщений: 5833

Re: Duplicate entry

По определению таблицы комбинация полей `id_firm` и `id_firm_type_room` уникальна.
Вы пытаетесь добавить дублирующую информацию - возникает ошибка.

Какое поведение запроса вы хотите получить? Чтобы можно было добавлять дублирующую информацию или чтобы добавлялось только первое значение?

Неактивен

 

#3 03.03.2011 08:00:21

elslepas
Участник
Зарегистрирован: 31.10.2010
Сообщений: 16

Re: Duplicate entry

В томто и дело что я добавляю уникальную информацию для ключа. Поля 'id_firm' в запросе действительно совпадают, а поле 'id_firm_type_room' содержит значения "Standart" и "standard"

INSERT INTO `tourshow_firms`.`z_type_room` (
`flag_admin` ,
`id_firm` ,
`id_firm_type_room` ,
`id_type_room` ,
`type_room`
)
VALUES
('', '123', 'Standard', '', ''),
('', '123', 'standard', '', '')

Неужели для mysql поля начинающиеся с заглавной или прописной буквы являются одинаковыми?

Отредактированно elslepas (03.03.2011 08:01:47)

Неактивен

 

#4 03.03.2011 09:53:07

vasya
Архат
MySQL Authorized Developer
Откуда: Орел
Зарегистрирован: 07.03.2007
Сообщений: 5833

Re: Duplicate entry

elslepas написал:

Неужели для mysql поля начинающиеся с заглавной или прописной буквы являются одинаковыми?

Ну так вы сами выбрали не чувствительное к регистру сопоставление `id_firm_type_room` varchar(200) COLLATE utf8_unicode_ci
сделайте utf8_unicode_cs

Неактивен

 

#5 03.03.2011 12:06:42

elslepas
Участник
Зарегистрирован: 31.10.2010
Сообщений: 16

Re: Duplicate entry

Большое спасибо! Правда я нигде не смог найти хоть одну кодировку с _cs. В чем дело? Я проверял на двух наших серверах и на локалке(Denwer)

Неактивен

 

#6 03.03.2011 21:03:07

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6756

Re: Duplicate entry

В utf8 нет кодировки cs. Она не имеет смысла, т.к. полностью совпадает с bin.

Неактивен

 

#7 04.03.2011 11:37:51

elslepas
Участник
Зарегистрирован: 31.10.2010
Сообщений: 16

Re: Duplicate entry

Спасибо)

Неактивен

 

Board footer

Работает на PunBB
© Copyright 2002–2008 Rickard Andersson