Mysql
 sql >> Database >  >> RDS >> Mysql

Correzione dell'avviso MySQL 1287:"BINARY expr" è deprecato e verrà rimosso in una versione futura

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 di BINARY ora genera un avviso. Usa CAST(... 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.