The day that you stop running is the day that you arrive.
Сижу, делаю сортировку на одном сайте.
Смотрю - максимальное значение цены у меня выдается почему-то 9, а минимальное - 1000000.
В коде вроде все нормально.
Лезу в PMA, делаю SELECT MAX(cost) FROM table и получаю 9. Делаю SELECT MIN(cost) FROM table и получаю 1000000.
Тип поля - INT.
Начинаю тихо ехать крышей.
Звоню La personne mystique, чтобы удостовериться, что это не я туплю.
Проверяем размер поля - INT(9), все влезает.
...
...
...
o____O'
И тут я думаю: поле ведет себя так, как будто оно VARCHAR, а не INT. Дай-ка я его выставлю в VARCHAR со сравнением, а потом верну в INT(9).
И заработало! Вероятно, когда-то это поле было VARCHAR, потом его меняли и произошел какой-то сбой в базе...
Первый раз такое вижу))
Но как у меня начала ехать крыша, лоооооол!
Хуже всего было то, что на соседней точно такой же таблице все работало!
Смотрю - максимальное значение цены у меня выдается почему-то 9, а минимальное - 1000000.
В коде вроде все нормально.
Лезу в PMA, делаю SELECT MAX(cost) FROM table и получаю 9. Делаю SELECT MIN(cost) FROM table и получаю 1000000.
Тип поля - INT.
Начинаю тихо ехать крышей.
Звоню La personne mystique, чтобы удостовериться, что это не я туплю.
Проверяем размер поля - INT(9), все влезает.
...
...
...
o____O'
И тут я думаю: поле ведет себя так, как будто оно VARCHAR, а не INT. Дай-ка я его выставлю в VARCHAR со сравнением, а потом верну в INT(9).
И заработало! Вероятно, когда-то это поле было VARCHAR, потом его меняли и произошел какой-то сбой в базе...
Первый раз такое вижу))
Но как у меня начала ехать крыша, лоооооол!
Хуже всего было то, что на соседней точно такой же таблице все работало!

Ты PMA юзаешь?)
А я как Navicat увидел так PMA больше не признаю ни в каком виде))
http тоннель рулит, он идет с ним в комплекте))
несколько таких клиентов
Такого как навикат больше не встречал) Всякие EMS - ерунда) Поэтому и крепко сижу на нем)
+1 к Навикатикам
Aristey хехе) так страшилка не из-за PMA, а из-за какого-то косяка в мускуле)
Не MySQL Front ли?) Если он, то это наиболее похожий на Navicat менеджер баз)) Собственно, до того как узнали о Навикате, пользовались именно им))
1.
Таблица содержит два поля decimal(12,0). Есть ещё некое поле-признак. Пишу select if(priznak = 1, POLE, POLE2) as POLE from tablitsa. И получаю часть данных в виде 99999999999, которых там вообще нет. Сижу, туплю. Оказалось, мускуль при подобном выражении автоматом стал преобразовывать результат в int(11) и, если поле не помещалось, нес вот такую ересь.
2.
Есть таблица с большим количеством записей. Одно из полей varchar(12). Все выборки типа select * from tablitsa where POLE = '123123123' работают хорошо. Но стоит один раз выполнить запрос типа select * from tablitsa where POLE in('123123123', '321321321', '2132132123') и трындец. Смотришь глазами — есть значение. Делаешь селект — ни одной записи. Вообще никак. Удаляешь-создаешь-заполняешь таблицу заново — работает. Выполняешь запрос с in — молча перестают работать выборки. Оказалось, работать снова без пересоздания будет либо если через LIKE, либо после явного преобразования в запросе поля с помощью binary.
3.
Вложеный запрос типа select * from tablitsa1 where POLE not in (select POLE from tablitsa2) исключить из таблицы 1 все записи, которые есть в таблице 2 перестает выдавать адекватный результат если во второй таблице несколько тысяч уникальных записей. Единственный вариант который пока хотькак-то работает — проверять скриптом в цикле по результатам запроса select POLE from tablitsa2 наличие записей через select count(*) from tablitsa1 where POLE = POLEizTABLITSY2.
да...мускуль то еще развлекалово..я тоже недавно подобном образом себе мозг выносил. Тоже из варчата в инт преобразовал и долго удивлялся...
))
Кстати, в описанной ситуации ордер так же работал бы некорректно.