Ако получите предупредителен номер 1287, който гласи „BINARY expr“ е отхвърлен и ще бъде премахнат в бъдеща версия. Моля, вместо това използвайте CAST когато изпълнявате заявка в MySQL, това е, защото използвате BINARY
оператор.
BINARY
Операторът е отхвърлен от MySQL 8.0.27.
За да отстраните проблема, прехвърлете стойността в двоичен файл, като използвате CAST()
функция вместо това.
Пример за предупреждение
Ето пример за код, който генерира предупреждението:
SELECT BINARY 'Cat';
Резултат:
+----------------------------+ | BINARY 'Cat' | +----------------------------+ | 0x436174 | +----------------------------+ 1 row in set, 1 warning (0.00 sec)
Виждаме, че работи добре, но получихме и предупреждение.
Пуснах това в MySQL 8.0.27 и така получих предупреждението. Ако го стартирате в по-ранна версия на MySQL, вероятно няма да получите предупреждението.
Нека проверим предупреждението:
SHOW WARNINGS;
Резултат:
+---------+------+----------------------------------------------------------------------------------------------+ | Level | Code | Message | +---------+------+----------------------------------------------------------------------------------------------+ | Warning | 1287 | 'BINARY expr' is deprecated and will be removed in a future release. Please use CAST instead | +---------+------+----------------------------------------------------------------------------------------------+
Това е в съответствие с бележките за версията на MySQL 8.0.27, които обясняват:
BINARY
Операторът вече е остарял и подлежи на премахване в бъдеща версия на MySQL. Използване наBINARY
сега предизвиква предупреждение. ИзползвайтеCAST(... AS BINARY)
вместо това.
Решение
Както намеква предупредителното съобщение, можем да се отървем от предупреждението, като използваме CAST()
функция вместо BINARY
оператор:
SELECT CAST('Cat' AS BINARY);
Резултат:
+----------------------------------------------+ | CAST('Cat' AS BINARY) | +----------------------------------------------+ | 0x436174 | +----------------------------------------------+ 1 row in set (0.00 sec)
Котката вече е преобразувана в двоичен, без да дава никакви предупреждения.
Като алтернатива можете да използвате CONVERT()
вместо CAST()
:
SELECT CONVERT('Cat' USING BINARY);
Резултат:
+----------------------------------------------------------+ | CONVERT('Cat' USING BINARY) | +----------------------------------------------------------+ | 0x436174 | +----------------------------------------------------------+ 1 row in set (0.00 sec)
Същият резултат.