Jeśli otrzymasz ostrzeżenie o numerze 1287, które brzmi „BINARY expr” jest przestarzałe i zostanie usunięte w przyszłej wersji. Zamiast tego użyj CAST uruchamiając zapytanie w MySQL, dzieje się tak, ponieważ używasz BINARY operator.
BINARY operator jest przestarzały w MySQL 8.0.27.
Aby rozwiązać problem, rzutuj wartość na binarny za pomocą CAST() zamiast tego.
Przykład ostrzeżenia
Oto przykład kodu, który generuje ostrzeżenie:
SELECT BINARY 'Cat'; Wynik:
+----------------------------+ | BINARY 'Cat' | +----------------------------+ | 0x436174 | +----------------------------+ 1 row in set, 1 warning (0.00 sec)
Widzimy, że zadziałało OK, ale otrzymaliśmy też ostrzeżenie.
Uruchomiłem to w MySQL 8.0.27 i otrzymałem ostrzeżenie. Jeśli uruchomisz go we wcześniejszej wersji MySQL, prawdopodobnie nie otrzymasz ostrzeżenia.
Sprawdźmy ostrzeżenie:
SHOW WARNINGS; Wynik:
+---------+------+----------------------------------------------------------------------------------------------+ | Level | Code | Message | +---------+------+----------------------------------------------------------------------------------------------+ | Warning | 1287 | 'BINARY expr' is deprecated and will be removed in a future release. Please use CAST instead | +---------+------+----------------------------------------------------------------------------------------------+
Jest to zgodne z uwagami do wydania MySQL 8.0.27, które wyjaśniają:
BINARYoperator jest teraz przestarzały i podlega usunięciu w przyszłej wersji MySQL. UżycieBINARYteraz powoduje ostrzeżenie. UżyjCAST(... AS BINARY)zamiast tego.
Rozwiązanie
Jak wskazuje komunikat ostrzegawczy, możemy pozbyć się ostrzeżenia za pomocą funkcji CAST() funkcja zamiast BINARY operator:
SELECT CAST('Cat' AS BINARY); Wynik:
+----------------------------------------------+
| CAST('Cat' AS BINARY) |
+----------------------------------------------+
| 0x436174 |
+----------------------------------------------+
1 row in set (0.00 sec) Kot został teraz przekonwertowany na binarny bez wyświetlania żadnych ostrzeżeń.
Możesz alternatywnie użyć CONVERT() zamiast CAST() :
SELECT CONVERT('Cat' USING BINARY); Wynik:
+----------------------------------------------------------+
| CONVERT('Cat' USING BINARY) |
+----------------------------------------------------------+
| 0x436174 |
+----------------------------------------------------------+
1 row in set (0.00 sec) Ten sam wynik.