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
BINARYoperatøren er nu forældet og kan fjernes i en fremtidig udgivelse af MySQL. Brug afBINARYgiver nu en advarsel. BrugCAST(... 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.