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í:
BINARYoperátor je nyní zastaralý a v budoucí verzi MySQL bude odstraněn. PoužitíBINARYnyní 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.