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 afBINARY
giver 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.