Pokud se zobrazí varování číslo 1287, které zní „BINARY expr“ je zastaralé a bude odstraněno v budoucí verzi. Místo toho použijte CAST při spouštění dotazu v MySQL je to proto, že používáte BINARY
operátor.
BINARY
Operátor je od MySQL 8.0.27 zastaralý.
Chcete-li problém vyřešit, přeneste hodnotu do binárního kódu pomocí CAST()
místo toho.
Příklad varování
Zde je příklad kódu, který vytváří varování:
SELECT BINARY 'Cat';
Výsledek:
+----------------------------+ | BINARY 'Cat' | +----------------------------+ | 0x436174 | +----------------------------+ 1 row in set, 1 warning (0.00 sec)
Vidíme, že to fungovalo dobře, ale také jsme dostali varování.
Spustil jsem to v MySQL 8.0.27 a tak jsem dostal varování. Pokud jej spustíte v dřívější verzi MySQL, pravděpodobně neobdržíte varování.
Podívejme se na varování:
SHOW WARNINGS;
Výsledek:
+---------+------+----------------------------------------------------------------------------------------------+ | Level | Code | Message | +---------+------+----------------------------------------------------------------------------------------------+ | Warning | 1287 | 'BINARY expr' is deprecated and will be removed in a future release. Please use CAST instead | +---------+------+----------------------------------------------------------------------------------------------+
To je v souladu s poznámkami k vydání MySQL 8.0.27, které vysvětlují:
BINARY
operátor je nyní zastaralý a v budoucí verzi MySQL bude odstraněn. PoužitíBINARY
nyní způsobí varování. PoužijteCAST(... AS BINARY)
místo toho.
Řešení
Jak varovná zpráva naráží, můžeme se varování zbavit pomocí CAST()
místo funkce BINARY
operátor:
SELECT CAST('Cat' AS BINARY);
Výsledek:
+----------------------------------------------+ | CAST('Cat' AS BINARY) | +----------------------------------------------+ | 0x436174 | +----------------------------------------------+ 1 row in set (0.00 sec)
Kočka byla nyní převedena do binární podoby, aniž by vyvolala jakákoli varování.
Alternativně můžete použít CONVERT()
místo CAST()
:
SELECT CONVERT('Cat' USING BINARY);
Výsledek:
+----------------------------------------------------------+ | CONVERT('Cat' USING BINARY) | +----------------------------------------------------------+ | 0x436174 | +----------------------------------------------------------+ 1 row in set (0.00 sec)
Stejný výsledek.