Om du får varningsnummer 1287 som lyder 'BINÄR expr' föråldras och kommer att tas bort i en framtida version. Använd CAST istället när du kör en fråga i MySQL beror det på att du använder BINARY
operatör.
Den BINARY
operatorn är utfasad från och med MySQL 8.0.27.
För att åtgärda problemet, casta värdet till binärt med CAST()
funktion istället.
Exempel på varning
Här är ett exempel på kod som ger varningen:
SELECT BINARY 'Cat';
Resultat:
+----------------------------+ | BINARY 'Cat' | +----------------------------+ | 0x436174 | +----------------------------+ 1 row in set, 1 warning (0.00 sec)
Vi kan se att det fungerade OK, men vi fick också en varning.
Jag körde det i MySQL 8.0.27 och så fick jag varningen. Om du kör det i en tidigare version av MySQL kommer du förmodligen inte att få varningen.
Låt oss kolla varningen:
SHOW WARNINGS;
Resultat:
+---------+------+----------------------------------------------------------------------------------------------+ | Level | Code | Message | +---------+------+----------------------------------------------------------------------------------------------+ | Warning | 1287 | 'BINARY expr' is deprecated and will be removed in a future release. Please use CAST instead | +---------+------+----------------------------------------------------------------------------------------------+
Detta är i linje med MySQL 8.0.27 release notes som förklarar:
Den
BINARY
operatorn är nu utfasad och kan tas bort i en framtida version av MySQL. Användning avBINARY
ger nu en varning. AnvändCAST(... AS BINARY)
istället.
Lösning
Som varningsmeddelandet anspelar på kan vi bli av med varningen genom att använda CAST()
funktion istället för BINARY
operatör:
SELECT CAST('Cat' AS BINARY);
Resultat:
+----------------------------------------------+ | CAST('Cat' AS BINARY) | +----------------------------------------------+ | 0x436174 | +----------------------------------------------+ 1 row in set (0.00 sec)
Katten har nu konverterats till binär utan att ge några varningar.
Du kan alternativt använda CONVERT()
istället för CAST()
:
SELECT CONVERT('Cat' USING BINARY);
Resultat:
+----------------------------------------------------------+ | CONVERT('Cat' USING BINARY) | +----------------------------------------------------------+ | 0x436174 | +----------------------------------------------------------+ 1 row in set (0.00 sec)
Samma resultat.