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:
OBINARY
O operador agora está obsoleto e sujeito a remoção em uma versão futura do MySQL. Uso deBINARY
agora 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.