SQLinfo.ru - Все о MySQL

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

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

Вы не зашли.

#1 15.05.2008 13:20:49

kipish
Участник
Зарегистрирован: 15.05.2008
Сообщений: 4

Непонятная проблема с Unique key

Вот обнаружил такой глюк на MySQL 4.0.24,
WinXP, настройки по умолчанию


CREATE TABLE `strada` (
`ID` varchar(38) NOT NULL default '',
`Nome` varchar(50) default NULL,
PRIMARY KEY (`ID`),
UNIQUE KEY `Nome` (`Nome`)
) TYPE=InnoDB

INSERT into strada values ('1','Валова')
INSERT into strada values ('2','Гайова')

Второй INSERT не проходит - говорит - дубликат,
также обнаружил несколько других комбинаций букв, с которыми не проходит INSERT
С чем это может быть связано ?

Неактивен

 

#2 15.05.2008 13:24:10

rgbeast
Администратор
MySQL Authorized Developer and DBA
Откуда: Москва
Зарегистрирован: 21.01.2007
Сообщений: 3878

Re: Непонятная проблема с Unique key

Это проблема с кодировкой. Лучше всего перейти на MySQL 4.1 и выше. См. также http://sqlinfo.ru/articles/encoding/

Неактивен

 

#3 15.05.2008 13:39:16

kipish
Участник
Зарегистрирован: 15.05.2008
Сообщений: 4

Re: Непонятная проблема с Unique key

К сожалению, перейти в данный момент на MySQL 4.1 - 5.0 невозможно, так как проект написан на BDS 2006 с использованием dpExpress, не поддерживающей MySQL 4.1 - 5.0.
Необходим переход на BDS 2007, что сейчас невозможно....
Других способов решить проблему нет ?

Неактивен

 

#4 15.05.2008 13:59:20

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

Re: Непонятная проблема с Unique key

По умолчанию у Вас стоит кодировка latin1, которая не поддерживает русский язык. Попробуйте явно указать русскоязычную кодировку.

Неактивен

 

#5 27.05.2008 16:08:56

Valiant
Участник
Зарегистрирован: 27.05.2008
Сообщений: 1

Re: Непонятная проблема с Unique key

kipish написал:

Других способов решить проблему нет ?

Какже нет ??? есть!!! smile
Вариант первый:
устанавливаем нужную версию MySQL
идём install_dir\lib\debug

оттуда берём libmysql.dll делаем lib файл
в папку с проектом копируем оба файла
*к примеру туда же копируем папку include

клеим к проекту пути и подключаем либу и включаем mysql.h в ваш проект
дальше по документации

Вариант второй:
качаем компонент ZeoSlib отсюда
устанавливаем как написано в документации и работаем

Я описал самые верные решения которые проверял сам, а вообще вас гугл в руки и вы всё найдёте!!!

Неактивен

 

#6 29.05.2008 17:27:25

kipish
Участник
Зарегистрирован: 15.05.2008
Сообщений: 4

Re: Непонятная проблема с Unique key

Ну, я же написал в исходном посте, что используется BDS 2006 и dbExpress -
переделать СЕЙЧАС весь проект даже на BDS 2007 проблематично, не говоря уже про ZeoSlib

Неактивен

 

#7 30.05.2008 06:07:08

LazY
_cмельчак
MySQL Authorized Developer and DBA
Зарегистрирован: 02.04.2007
Сообщений: 845

Re: Непонятная проблема с Unique key

Выход вижу такой: в клиенте, который вставляет, делать, например, base64_encode (потом, соответственно, раскодировать) и хранить данные именно в base64, поскольку она превратит в latin1 что угодно.

Неактивен

 

#8 02.06.2008 14:39:57

kipish
Участник
Зарегистрирован: 15.05.2008
Сообщений: 4

Re: Непонятная проблема с Unique key

Решение нашлось неожиданно...
В исходном посте я привел только минимально воспроизводимый пример.
На самом деле в таблице уникальный индекс построен по 2 полям Varchar
Переставив местами порядок полей в индексе, решил проблему...
Какая связь между порядком полей в индексе, не понимаю, наверное, баг...
Но работает, а это меня сейчас устраивает...
Со временем буду переводить проект на 5 версию MySQL и BDS 2007

Всем спасибо за советы !

Неактивен

 

Board footer

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