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:
OBINARYO operador agora está obsoleto e sujeito a remoção em uma versão futura do MySQL. Uso deBINARYagora causa um aviso. UseCAST(... 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.