Задавайте вопросы, мы ответим
Вы не зашли.
Вот обнаружил такой глюк на 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
С чем это может быть связано ?
Неактивен
Это проблема с кодировкой. Лучше всего перейти на MySQL 4.1 и выше. См. также http://sqlinfo.ru/articles/encoding/
Неактивен
К сожалению, перейти в данный момент на MySQL 4.1 - 5.0 невозможно, так как проект написан на BDS 2006 с использованием dpExpress, не поддерживающей MySQL 4.1 - 5.0.
Необходим переход на BDS 2007, что сейчас невозможно....
Других способов решить проблему нет ?
Неактивен
По умолчанию у Вас стоит кодировка latin1, которая не поддерживает русский язык. Попробуйте явно указать русскоязычную кодировку.
Неактивен
kipish написал:
Других способов решить проблему нет ?
Какже нет ??? есть!!!
Вариант первый:
устанавливаем нужную версию MySQL
идём install_dir\lib\debug
оттуда берём libmysql.dll делаем lib файл
в папку с проектом копируем оба файла
*к примеру туда же копируем папку include
клеим к проекту пути и подключаем либу и включаем mysql.h в ваш проект
дальше по документации
Вариант второй:
качаем компонент ZeoSlib отсюда
устанавливаем как написано в документации и работаем
Я описал самые верные решения которые проверял сам, а вообще вас гугл в руки и вы всё найдёте!!!
Неактивен
Ну, я же написал в исходном посте, что используется BDS 2006 и dbExpress -
переделать СЕЙЧАС весь проект даже на BDS 2007 проблематично, не говоря уже про ZeoSlib
Неактивен
Выход вижу такой: в клиенте, который вставляет, делать, например, base64_encode (потом, соответственно, раскодировать) и хранить данные именно в base64, поскольку она превратит в latin1 что угодно.
Неактивен
Решение нашлось неожиданно...
В исходном посте я привел только минимально воспроизводимый пример.
На самом деле в таблице уникальный индекс построен по 2 полям Varchar
Переставив местами порядок полей в индексе, решил проблему...
Какая связь между порядком полей в индексе, не понимаю, наверное, баг...
Но работает, а это меня сейчас устраивает...
Со временем буду переводить проект на 5 версию MySQL и BDS 2007
Всем спасибо за советы !
Неактивен