SQLinfo.ru - Все о MySQL

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

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

Вы не зашли.

#1 17.04.2016 09:46:34

kryl1979
Завсегдатай
Откуда: Россия
Зарегистрирован: 17.04.2016
Сообщений: 34

Ошибка Illegal mix of collations for operation '<='

Добрый день .
Помогите пожалуйста с ошибкой.
есть запрос в базу :

require(INC_DIR .'functions_group.php');
$time = bb_date(TIMENOW, 'Y-m-d', 'false');
$times_del = DB()->fetch_rowset("SELECT group_id, user_id FROM ". BB_USER_GROUP ." WHERE time_del <= '$time' AND time_del != '0000-00-00'");

foreach($times_del as $row)
{
    delete_user_group ($row['group_id'], $row['user_id']);
}


При выполнении выдает ошибку на эту строчку (точнее на неравенство <= )
$times_del = DB()->fetch_rowset("SELECT group_id, user_id FROM ". BB_USER_GROUP ." WHERE time_del <= '$time' AND time_del != '0000-00-00'");

Вот сама ошибка :
#001271 Illegal mix of collations for operation '<='

SELECT group_id, user_id FROM bb_user_group WHERE time_del <= 'Сегодня, в 21:24' AND time_del != '0000-00-00'

Source  : library\includes\cron\jobs\clean_dlstat.php(84) :: db1.99
IP      : 127.0.0.1
Date    : 2016-04-16 21:24:06
Agent   : Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/48.0.2564.97 Safari/537.36
Req_URI : /admin/admin_cron.php?mode=run&id=9
Referer : http://......./admin/admin_cron.php?mode=list
Method  : GET
PID     : 05956
Request : Array
(
    [mode] => run
    [id] => 9
)

Неактивен

 

#2 17.04.2016 11:08:08

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

Re: Ошибка Illegal mix of collations for operation '<='

суть проблемы:
http://sqlinfo.ru/forum/viewtopic.php?pid=14740#p14740

Как вариант, преобразуйте переменную явно, используя CONVERT или CAST
https://dev.mysql.com/doc/refman/5.0/en … nvert.html

Неактивен

 

#3 17.04.2016 11:37:01

kryl1979
Завсегдатай
Откуда: Россия
Зарегистрирован: 17.04.2016
Сообщений: 34

Re: Ошибка Illegal mix of collations for operation '<='

Спасибо за ответ .
Кодировка же во всех таблицах у меня одинаковая . Это про CONVERT.
Вчера весь инет перерыл ) , так ни чего толком не нашел .
CONVERT пробовал , но ни чего не получилось , скорей всего не правильно прописывал .
Я то вообще от этого далек )))

Неактивен

 

#4 17.04.2016 12:08:23

kryl1979
Завсегдатай
Откуда: Россия
Зарегистрирован: 17.04.2016
Сообщений: 34

Re: Ошибка Illegal mix of collations for operation '<='

Вот так наверное правильно будет

$times_del = DB()->fetch_rowset("SELECT group_id, user_id FROM ". BB_USER_GROUP ." WHERE time_del <= CONVERT ( '$time', TIME) AND time_del != '0000-00-00'");

Неактивен

 

#5 17.04.2016 12:11:40

deadka
Администратор
Зарегистрирован: 14.11.2007
Сообщений: 2422

Re: Ошибка Illegal mix of collations for operation '<='

Проблема тут скорее
$time = bb_date(TIMENOW, 'Y-m-d', 'false');
Значение переменной $time должно быть что-то вроде "2001-12-13 12:34:56".


Зеленый свет для слабаков, долги отдают только трусы, тру гики работают только в консоли...

Неактивен

 

#6 17.04.2016 12:16:26

deadka
Администратор
Зарегистрирован: 14.11.2007
Сообщений: 2422

Re: Ошибка Illegal mix of collations for operation '<='

kryl1979 написал:

Вот так наверное правильно будет

$times_del = DB()->fetch_rowset("SELECT group_id, user_id FROM ". BB_USER_GROUP ." WHERE time_del <= CONVERT ( '$time', TIME) AND time_del != '0000-00-00'");

А чему равно значение переменной $str, если ей присовить строку запроса вот так:

$str = "SELECT group_id, user_id FROM ". BB_USER_GROUP ." WHERE time_del <= CONVERT ( '$time', TIME) AND time_del != '0000-00-00'";

?


Зеленый свет для слабаков, долги отдают только трусы, тру гики работают только в консоли...

Неактивен

 

#7 17.04.2016 12:34:11

kryl1979
Завсегдатай
Откуда: Россия
Зарегистрирован: 17.04.2016
Сообщений: 34

Re: Ошибка Illegal mix of collations for operation '<='

А где значение это посмотреть )))
$str =

Неактивен

 

#8 17.04.2016 12:36:12

deadka
Администратор
Зарегистрирован: 14.11.2007
Сообщений: 2422

Re: Ошибка Illegal mix of collations for operation '<='

ну можете на экран вывести

print $str . "<br/>\n";

или в лог записать, тут уж Вам виднее smile.


Зеленый свет для слабаков, долги отдают только трусы, тру гики работают только в консоли...

Неактивен

 

#9 17.04.2016 12:38:36

kryl1979
Завсегдатай
Откуда: Россия
Зарегистрирован: 17.04.2016
Сообщений: 34

Re: Ошибка Illegal mix of collations for operation '<='

Сейчас попробую )))

Неактивен

 

#10 17.04.2016 12:44:52

kryl1979
Завсегдатай
Откуда: Россия
Зарегистрирован: 17.04.2016
Сообщений: 34

Re: Ошибка Illegal mix of collations for operation '<='

А как в лог записать , так не получается посмотреть (

Неактивен

 

#11 17.04.2016 12:48:00

deadka
Администратор
Зарегистрирован: 14.11.2007
Сообщений: 2422

Re: Ошибка Illegal mix of collations for operation '<='

ну например функцией error_log
или просто в файл функцией file_put_contents.
Только с этим уже лучше на webew.ru в php-раздел.


Зеленый свет для слабаков, долги отдают только трусы, тру гики работают только в консоли...

Неактивен

 

#12 17.04.2016 12:55:21

kryl1979
Завсегдатай
Откуда: Россия
Зарегистрирован: 17.04.2016
Сообщений: 34

Re: Ошибка Illegal mix of collations for operation '<='

)))
плохо когда кривые руки и сам не знаешь что делаешь ))) это я про себя ))
Спасибо большое за уделённое время ..
Буду копать , может что то и получится .

Неактивен

 

#13 17.04.2016 13:00:35

deadka
Администратор
Зарегистрирован: 14.11.2007
Сообщений: 2422

Re: Ошибка Illegal mix of collations for operation '<='

Удачи в нелегком деле smile.

$str = "SELECT group_id, user_id FROM ". BB_USER_GROUP ." WHERE time_del <= CONVERT ( '$time', TIME) AND time_del != '0000-00-00'";
file_put_contents("d:/log.txt", $str);


Должен создастся файл log.txt в корне диска d
Путь, конечно, можно поменять.


Зеленый свет для слабаков, долги отдают только трусы, тру гики работают только в консоли...

Неактивен

 

#14 17.04.2016 13:02:31

kryl1979
Завсегдатай
Откуда: Россия
Зарегистрирован: 17.04.2016
Сообщений: 34

Re: Ошибка Illegal mix of collations for operation '<='

во ))) так понятно ))
вот из лога
SELECT group_id, user_id FROM bb_user_group WHERE time_del <= CONVERT ( 'Сегодня, в 13:01', TIME) AND time_del != '0000-00-00'

Неактивен

 

#15 17.04.2016 13:05:47

deadka
Администратор
Зарегистрирован: 14.11.2007
Сообщений: 2422

Re: Ошибка Illegal mix of collations for operation '<='

Ой не нравятся мне эти нули. time_del - это ж дата а не время?
что до того, что внутри CONVERT - то см
http://sqlinfo.ru/forum/viewtopic.php?pid=42997#p42997
выводить в лог Вы уже умеете smile, так что проще будет.


Зеленый свет для слабаков, долги отдают только трусы, тру гики работают только в консоли...

Неактивен

 

#16 17.04.2016 13:07:53

deadka
Администратор
Зарегистрирован: 14.11.2007
Сообщений: 2422

Re: Ошибка Illegal mix of collations for operation '<='

какая структура у таблицы bb_user_group?
Посмотреть можно через

show create table `bb_user_group`;


Зеленый свет для слабаков, долги отдают только трусы, тру гики работают только в консоли...

Неактивен

 

#17 17.04.2016 13:12:08

kryl1979
Завсегдатай
Откуда: Россия
Зарегистрирован: 17.04.2016
Сообщений: 34

Re: Ошибка Illegal mix of collations for operation '<='

Да это дата .
Код не сам писал , из старой версии движка хочу на новую запихнуть )
когда то это работало ))

Неактивен

 

#18 17.04.2016 13:27:14

kryl1979
Завсегдатай
Откуда: Россия
Зарегистрирован: 17.04.2016
Сообщений: 34

Re: Ошибка Illegal mix of collations for operation '<='

Да тут проблема в

$time = bb_date(TIMENOW, 'Y-m-d', 'false');


выводит время . а надо дату .

Неактивен

 

#19 17.04.2016 13:36:43

deadka
Администратор
Зарегистрирован: 14.11.2007
Сообщений: 2422

Re: Ошибка Illegal mix of collations for operation '<='

Ну да, похоже на то. А что такое TIMENOW? так-то Капитан Очевидность подсказывает что это такое, но все же лучше посмотрите в коде, как определяется TIMENOW.


Зеленый свет для слабаков, долги отдают только трусы, тру гики работают только в консоли...

Неактивен

 

#20 17.04.2016 13:46:23

kryl1979
Завсегдатай
Откуда: Россия
Зарегистрирован: 17.04.2016
Сообщений: 34

Re: Ошибка Illegal mix of collations for operation '<='

Это ланг (сегодня )
сделал дату вот так

$time = date("Y-m-d");

за место этого
$time = bb_date(TIMENOW, 'Y-m-d', 'false');

Все заработало как нужно (на локалке)
правда в логах базы ошибка есть

#001064 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '99' at line 1

SHOW TABLE STATUS FROM 99

Source  : admin\index.php(125) :: db1.99
IP      : 127.0.0.1
Date    : 2016-04-17 13:45:25
Agent   : Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/48.0.2564.97 Safari/537.36
Req_URI : /admin/index.php?pane=right
Referer : http://..../admin/index.php
Method  : GET
PID     : 04872
Request : Array
(
    [pane] => right
)______________________________________________________________________________


попробую теперь на сайте .

Неактивен

 

#21 17.04.2016 13:50:30

deadka
Администратор
Зарегистрирован: 14.11.2007
Сообщений: 2422

Re: Ошибка Illegal mix of collations for operation '<='

Ошибка не факт, что отсюда. Но если отсюда - изыскивайте проблемный запрос и присылайте ).


Зеленый свет для слабаков, долги отдают только трусы, тру гики работают только в консоли...

Неактивен

 

#22 17.04.2016 13:52:47

kryl1979
Завсегдатай
Откуда: Россия
Зарегистрирован: 17.04.2016
Сообщений: 34

Re: Ошибка Illegal mix of collations for operation '<='

понял , буду смотреть .
Большое спасибо за помощь )))
Если бы не подсказали так бы и копал не то что нужно )

Отредактированно kryl1979 (17.04.2016 13:54:13)

Неактивен

 

Board footer

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