sql >> Databasteknik >  >> RDS >> Mysql

Fix MySQL Warning 1287:"BINARY expr" är utfasad och kommer att tas bort i en framtida version

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 av BINARY ger nu en varning. Använd CAST(... 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.


  1. ROUND() Exempel i SQL Server

  2. Uppgradera PostgreSQL från 9.6 till 10.0 på Ubuntu 16.10

  3. Hur ändrar jag fält i den nya PostgreSQL JSON-datatypen?

  4. SQL-kommando för att lista och visa alla databaser i MySQL och MariaDB