sql >> Base de Datos >  >> RDS >> Mysql

Arreglar la advertencia de MySQL 1287:'BINARY expr' está en desuso y se eliminará en una versión futura

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 de BINARY ahora provoca una advertencia. Utilice CAST(... 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.