Модераторы: skyboy
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Чудеса с char-ом? select достает, а delete не удаляет 
:(
    Опции темы
IceSunrise
Дата 19.3.2009, 12:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 61
Регистрация: 7.4.2008
Где: Санкт-Петербург

Репутация: нет
Всего: 3



Привет!
Может кто-нибудь подскажет... В таблице несколько столбцов, составной первичный ключ из id int(10) и dbuid char(38), делаю
select * from table where id=9 and dbuid='{0C7A2125-F3F6-40E4-8BEF-4EB721093161}';
выдает одну запись. Пытаюсь выполнить
delete from table where id=9 and dbuid='{0C7A2125-F3F6-40E4-8BEF-4EB721093161}';
Query OK, 0 rows affected (0.00 sec)
Как???
Поменял char на varchar - заработало...
PM MAIL   Вверх
Alternator
Дата 19.3.2009, 13:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 18
Регистрация: 10.6.2007

Репутация: нет
Всего: 1



dbuid у вас поле типа char(38)?
тогда действительно странно.
попробуйте запрос такого типа:
Код

delete from table where id=9 and dbuid LIKE '{0C7A2125-F3F6-40E4-8BEF-4EB721093161}%';

char в отличии от varchar дополняется пробелами в конце
но это не решает вопроса почему select у вас удается, а delete нет
странно в общем, весьма
PM MAIL   Вверх
IceSunrise
Дата 19.3.2009, 14:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 61
Регистрация: 7.4.2008
Где: Санкт-Петербург

Репутация: нет
Всего: 3



Alternator
С LIKE работает, но как это объяснить? Ведь тип колонки dbuid - char(38) и значение '{0C7A2125-F3F6-40E4-8BEF-4EB721093161}' ровно 38 символов. Про дополнение пробелами до размера строки char мне известно, но ведь здесь ничего добавляться не должно... Еще более странно то, что один оператор работает, а другой нет  smile 
PM MAIL   Вверх
Alternator
Дата 19.3.2009, 21:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 18
Регистрация: 10.6.2007

Репутация: нет
Всего: 1



к разряду изврашений.
мне кажется что это должно работать:
Код

delete from table where id=9 and dbuid=(
    select `dbuid` from table where id=9 and dbuid='{0C7A2125-F3F6-40E4-8BEF-4EB721093161}';);

вопрос неодинаковости обработки разных операторов это не снимает.увы.
попробуйте переустановить сервер  и/или проверить таблицу
короче говоря без бубна тут не обойтись
PM MAIL   Вверх
IceSunrise
Дата 20.3.2009, 13:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 61
Регистрация: 7.4.2008
Где: Санкт-Петербург

Репутация: нет
Всего: 3



В общем действительно какая-то хня :( На другом сервере нормально работает... Похоже на какую-то багу. Решил не рисковать и поменял тип на varchar(38), это везде работает smile
PM MAIL   Вверх
Alternator
Дата 20.3.2009, 18:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 18
Регистрация: 10.6.2007

Репутация: нет
Всего: 1



поговорите со своим хостером о необходимости обновления ПО
хотя если у хостера такие проблемы, то наврено и сапорт там никакой.
но, поробовать стоит.потому что неизвестно какие еще сюрпризы будут с таки ПО
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | MySQL | Следующая тема »


 




[ Время генерации скрипта: 0.0873 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.