Se ricevi il numero di avviso 1287 che dice 'BINARY expr' è deprecato e verrà rimosso in una versione futura. Utilizza invece CAST quando esegui una query in MySQL, è perché stai usando il BINARY
operatore.
Il BINARY
operatore è deprecato a partire da MySQL 8.0.27.
Per risolvere il problema, esegui il cast del valore in binary usando CAST()
funzione invece.
Esempio di avviso
Ecco un esempio di codice che produce l'avviso:
SELECT BINARY 'Cat';
Risultato:
+----------------------------+ | BINARY 'Cat' | +----------------------------+ | 0x436174 | +----------------------------+ 1 row in set, 1 warning (0.00 sec)
Possiamo vedere che ha funzionato bene, ma abbiamo anche ricevuto un avviso.
L'ho eseguito in MySQL 8.0.27 e quindi ho ricevuto l'avviso. Se lo esegui in una versione precedente di MySQL, probabilmente non riceverai l'avviso.
Controlliamo l'avviso:
SHOW WARNINGS;
Risultato:
+---------+------+----------------------------------------------------------------------------------------------+ | Level | Code | Message | +---------+------+----------------------------------------------------------------------------------------------+ | Warning | 1287 | 'BINARY expr' is deprecated and will be removed in a future release. Please use CAST instead | +---------+------+----------------------------------------------------------------------------------------------+
Ciò è in linea con le note di rilascio di MySQL 8.0.27 che spiegano:
Il
BINARY
operator è ora deprecato e soggetto a rimozione in una versione futura di MySQL. Uso diBINARY
ora genera un avviso. UsaCAST(... AS BINARY)
invece.
Soluzione
Come allude il messaggio di avviso, possiamo eliminare l'avviso utilizzando CAST()
funzione invece di BINARY
operatore:
SELECT CAST('Cat' AS BINARY);
Risultato:
+----------------------------------------------+ | CAST('Cat' AS BINARY) | +----------------------------------------------+ | 0x436174 | +----------------------------------------------+ 1 row in set (0.00 sec)
Il gatto è stato ora convertito in binario senza produrre alcun avviso.
In alternativa puoi usare CONVERT()
invece di CAST()
:
SELECT CONVERT('Cat' USING BINARY);
Risultato:
+----------------------------------------------------------+ | CONVERT('Cat' USING BINARY) | +----------------------------------------------------------+ | 0x436174 | +----------------------------------------------------------+ 1 row in set (0.00 sec)
Stesso risultato.