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ą:
BINARY
operator jest teraz przestarzały i podlega usunięciu w przyszłej wersji MySQL. UżycieBINARY
teraz 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.