Si recibe el número de advertencia 1287 que dice 'BINARY expr' está en desuso y se eliminará en una versión futura. Utilice CAST en su lugar cuando ejecuta una consulta en MySQL, es porque está usando el BINARY
operador.
El BINARY
operador está en desuso a partir de MySQL 8.0.27.
Para solucionar el problema, convierte el valor en binario usando CAST()
en su lugar.
Ejemplo de Advertencia
Este es un ejemplo de código que genera la advertencia:
SELECT BINARY 'Cat';
Resultado:
+----------------------------+ | BINARY 'Cat' | +----------------------------+ | 0x436174 | +----------------------------+ 1 row in set, 1 warning (0.00 sec)
Podemos ver que funcionó bien, pero también recibimos una advertencia.
Ejecuté eso en MySQL 8.0.27 y recibí la advertencia. Si lo ejecuta en una versión anterior de MySQL, probablemente no reciba la advertencia.
Revisemos la advertencia:
SHOW WARNINGS;
Resultado:
+---------+------+----------------------------------------------------------------------------------------------+ | Level | Code | Message | +---------+------+----------------------------------------------------------------------------------------------+ | Warning | 1287 | 'BINARY expr' is deprecated and will be removed in a future release. Please use CAST instead | +---------+------+----------------------------------------------------------------------------------------------+
Esto está en línea con las notas de la versión de MySQL 8.0.27 que explican:
El
BINARY
operador ahora está en desuso y está sujeto a eliminación en una versión futura de MySQL. Uso deBINARY
ahora provoca una advertencia. UtiliceCAST(... AS BINARY)
en su lugar.
Solución
Como alude el mensaje de advertencia, podemos deshacernos de la advertencia usando CAST()
función en lugar de BINARY
operador:
SELECT CAST('Cat' AS BINARY);
Resultado:
+----------------------------------------------+ | CAST('Cat' AS BINARY) | +----------------------------------------------+ | 0x436174 | +----------------------------------------------+ 1 row in set (0.00 sec)
El gato ahora se ha convertido a binario sin producir ninguna advertencia.
Alternativamente, puede usar CONVERT()
en lugar de CAST()
:
SELECT CONVERT('Cat' USING BINARY);
Resultado:
+----------------------------------------------------------+ | CONVERT('Cat' USING BINARY) | +----------------------------------------------------------+ | 0x436174 | +----------------------------------------------------------+ 1 row in set (0.00 sec)
Mismo resultado.