powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Некорректно работает Like
8 сообщений из 8, страница 1 из 1
Некорректно работает Like
    #39846133
maldalik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Такая беда случилась

Была процедура в которой работал запрос такого рода
select * from asterisk.queue_log q
where date(q.time) BETWEEN '2019-07-31' and '2019-08-01 23:59:59' and
q.event like 'ADDMEMBER'

Все работало но в какой то момент перестало. И теперь срабатывает только такой вариант (найдено опытным путем)
select * from asterisk.queue_log q
where date(q.time) BETWEEN '2019-07-31' and '2019-08-01 23:59:59' and
q.event like '%ADDMEMBER'

Дополнительных символов нет, Length возвращает 9. Для других значений event все работает корректно.
Где собака порылась? Запрос стоял в триггере и часть данных соответственно не записалась. На данный момент поправили но хотелось бы понять причины.

Хуже того появились еще более странные вещи
select count(*) from asterisk.queue_log q
where date(q.time) BETWEEN '2019-07-31' and '2019-08-01 23:59:59'
возвращает 15. Когда делаешь выборку - записей несколько тысяч.

База не моя, но так получилось поддержку сбросили на меня( чел уволился)...
Может быть какое то повреждение таблицу/индексов?
Mysql знаю слабо.
...
Рейтинг: 0 / 0
Некорректно работает Like
    #39846148
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maldalikДополнительных символов нет, Length возвращает 9.Поневоле вопрос - какой [censored] вместо обычного сравнения использовал LIKE?

maldalikМожет быть какое то повреждение таблицу/индексов?
Начните с
Код: sql
1.
ANALYZE TABLE asterisk.queue_log;
...
Рейтинг: 0 / 0
Некорректно работает Like
    #39846154
Фотография Дегтярев Евгений
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AkinaПоневоле вопрос - какой [censored] вместо обычного сравнения использовал LIKE?

видимо тот же который использовал
авторdate(q.time) BETWEEN '2019-07-31' and '2019-08-01 23:59:59'
...
Рейтинг: 0 / 0
Некорректно работает Like
    #39846155
maldalik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
AkinamaldalikДополнительных символов нет, Length возвращает 9.Поневоле вопрос - какой [censored] вместо обычного сравнения использовал LIKE?

maldalikМожет быть какое то повреждение таблицу/индексов?
Начните с
Код: sql
1.
ANALYZE TABLE asterisk.queue_log;



'asterisk.queue_log', 'analyze', 'status', 'OK'

Самое смешное что
select * from asterisk.queue_log q
where date(q.time) BETWEEN '2019-07-31' and '2019-08-01 23:59:59' and
q.event='ADDMEMBER'
тоже не прокатывает. :(
Копировать из таблицы в условие тоже пробовал...
...
Рейтинг: 0 / 0
Некорректно работает Like
    #39846180
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maldalik , покажите полный DDL таблицы. А также покажите результат

Код: sql
1.
2.
3.
4.
5.
6.
SELECT `event`, HEX(`event`) `hex`, VERSION() `ver`
FROM asterisk.queue_log
WHERE DATE(`time`) BETWEEN '2019-07-31' AND '2019-08-01' 
AND `event` != 'ADDMEMBER'
AND `event` LIKE '%ADDMEMBER'
ORDER BY `time` LIMIT 10
...
Рейтинг: 0 / 0
Некорректно работает Like
    #39846218
maldalik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Akina maldalik , покажите полный DDL таблицы. А также покажите результат

Код: sql
1.
2.
3.
4.
5.
6.
SELECT `event`, HEX(`event`) `hex`, VERSION() `ver`
FROM asterisk.queue_log
WHERE DATE(`time`) BETWEEN '2019-07-31' AND '2019-08-01' 
AND `event` != 'ADDMEMBER'
AND `event` LIKE '%ADDMEMBER'
ORDER BY `time` LIMIT 10



Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
CREATE TABLE `queue_log` (
  `id` bigint(255) unsigned NOT NULL AUTO_INCREMENT,
  `time` varchar(26) NOT NULL DEFAULT '',
  `callid` varchar(40) NOT NULL DEFAULT '',
  `queuename` varchar(20) NOT NULL DEFAULT '',
  `agent` varchar(50) NOT NULL DEFAULT '',
  `event` varchar(20) NOT NULL DEFAULT '',
  `data` varchar(100) NOT NULL DEFAULT '',
  `data1` varchar(40) NOT NULL DEFAULT '',
  `data2` varchar(40) NOT NULL DEFAULT '',
  `data3` varchar(40) NOT NULL DEFAULT '',
  `data4` varchar(40) NOT NULL DEFAULT '',
  `data5` varchar(40) NOT NULL DEFAULT '',
  `created` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
  PRIMARY KEY (`id`),
  KEY `queue` (`queuename`),
  KEY `event` (`event`),
  KEY `callid` (`callid`),
  KEY `data1` (`data1`),
  KEY `IDX_queue_log_time` (`time`),
  KEY `IDX_queue_log_created` (`created`)
) ENGINE=InnoDB AUTO_INCREMENT=2179780 DEFAULT CHARSET=utf8;



Пришлось разбить на 2 запроса, иначе запрос пустой получается.
...
Рейтинг: 0 / 0
Некорректно работает Like
    #39846236
Фотография Дегтярев Евгений
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
автор`time` varchar(26)
авторWHERE DATE(`time`) BETWEEN '2019-07-31' AND '2019-08-01'
мне нравится
...
Рейтинг: 0 / 0
Некорректно работает Like
    #39846437
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Выборка со вторым условием непуста. Выборка с обеими условиями пуста. Значит, все записи, соответствующие второму условию, не соответствуют первому, а т.к. соответствие второму исключает NULL, то все записи, соответствующие второму условию, соответствуют условию, которое инверсно первому, т.е. `event` = 'ADDMEMBER' .

Если запрос с таким условием не возвращает данных - У Вас более серьёзная проблема, чем какие-то минорные косяки. Рекомендую выполнить дамп данных, после чего таблицу удалить, пересоздать, и вернуть в неё данные.
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Некорректно работает Like
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]