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

Ret MySQL-advarsel 1287:'BINARY expr' er forældet og vil blive fjernet i en fremtidig udgivelse

Hvis du får advarselsnummer 1287, der lyder 'BINARY expr', er forældet og vil blive fjernet i en fremtidig udgivelse. Brug venligst CAST i stedet når du kører en forespørgsel i MySQL, er det fordi du bruger BINARY operatør.

Den BINARY operatør er forældet fra MySQL 8.0.27.

For at løse problemet skal du caste værdien til binær ved hjælp af CAST() funktion i stedet for.

Eksempel på advarsel

Her er et eksempel på kode, der producerer advarslen:

SELECT BINARY 'Cat';

Resultat:

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

Vi kan se, at det virkede OK, men vi fik også en advarsel.

Jeg kørte det i MySQL 8.0.27, og så fik jeg advarslen. Hvis du kører det i en tidligere version af MySQL, får du sandsynligvis ikke advarslen.

Lad os tjekke advarslen:

SHOW WARNINGS;

Resultat:

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

Dette er i overensstemmelse med MySQL 8.0.27 release notes, som forklarer:

Den BINARY operatøren er nu forældet og kan fjernes i en fremtidig udgivelse af MySQL. Brug af BINARY giver nu en advarsel. Brug CAST(... AS BINARY) i stedet.

Løsning

Som advarselsmeddelelsen hentyder til, kan vi slippe af med advarslen ved at bruge CAST() funktion i stedet for BINARY operatør:

SELECT CAST('Cat' AS BINARY);

Resultat:

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

Katten er nu blevet konverteret til binær uden at give nogen advarsler.

Du kan alternativt bruge CONVERT() i stedet for CAST() :

SELECT CONVERT('Cat' USING BINARY);

Resultat:

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

Samme resultat.


  1. Sammenføjning af forskellige datakilder i lagdeling

  2. CASE-sætning i WHERE-sætning i SQL Server 2008

  3. Sådan kalder du en lagret procedure i JDBC

  4. Det er i detaljerne