Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Correção do aviso 1287 do MySQL:‘BINARY expr’ está obsoleto e será removido em uma versão futura


Se você receber o aviso número 1287 que diz ‘BINARY expr’ está obsoleto e será removido em uma versão futura. Em vez disso, use CAST ao executar uma consulta no MySQL, é porque você está usando o BINARY operador.

O BINARY O operador está obsoleto a partir do MySQL 8.0.27.

Para corrigir o problema, converta o valor em binário usando o CAST() função em vez disso.

Exemplo de aviso


Aqui está um exemplo de código que produz o aviso:
SELECT BINARY 'Cat';

Resultado:
+----------------------------+
| BINARY 'Cat'               |
+----------------------------+
| 0x436174                   |
+----------------------------+
1 row in set, 1 warning (0.00 sec)

Podemos ver que funcionou bem, mas também recebemos um aviso.

Eu executei isso no MySQL 8.0.27 e recebi o aviso. Se você executá-lo em uma versão anterior do MySQL, provavelmente não receberá o aviso.

Vamos verificar o aviso:
SHOW WARNINGS;

Resultado:
+---------+------+----------------------------------------------------------------------------------------------+
| Level   | Code | Message                                                                                      |
+---------+------+----------------------------------------------------------------------------------------------+
| Warning | 1287 | 'BINARY expr' is deprecated and will be removed in a future release. Please use CAST instead |
+---------+------+----------------------------------------------------------------------------------------------+

Isso está de acordo com as notas de lançamento do MySQL 8.0.27 que explicam:

O BINARY O operador agora está obsoleto e sujeito a remoção em uma versão futura do MySQL. Uso de BINARY agora causa um aviso. Use CAST(... AS BINARY) em vez de.

Solução


Como a mensagem de aviso alude, podemos nos livrar do aviso usando o CAST() função em vez do BINARY operador:
SELECT CAST('Cat' AS BINARY);

Resultado:
+----------------------------------------------+
| CAST('Cat' AS BINARY)                        |
+----------------------------------------------+
| 0x436174                                     |
+----------------------------------------------+
1 row in set (0.00 sec)

O gato agora foi convertido em binário sem produzir nenhum aviso.

Você também pode usar CONVERT() em vez de CAST() :
SELECT CONVERT('Cat' USING BINARY);

Resultado:
+----------------------------------------------------------+
| CONVERT('Cat' USING BINARY)                              |
+----------------------------------------------------------+
| 0x436174                                                 |
+----------------------------------------------------------+
1 row in set (0.00 sec)

Mesmo resultado.