sql >> Database >  >> RDS >> Mysql

Fix MySQL-waarschuwing 1287:'BINARY expr' is verouderd en zal in een toekomstige release worden verwijderd

Als u waarschuwingsnummer 1287 krijgt met de tekst 'BINARY expr' is verouderd en zal in een toekomstige release worden verwijderd. Gebruik in plaats daarvan CAST wanneer u een query uitvoert in MySQL, is dit omdat u de BINARY gebruikt exploitant.

De BINARY operator is verouderd vanaf MySQL 8.0.27.

Om het probleem op te lossen, cast de waarde naar binair met behulp van de CAST() functie in plaats daarvan.

Voorbeeld van waarschuwing

Hier is een voorbeeld van code die de waarschuwing produceert:

SELECT BINARY 'Cat';

Resultaat:

+----------------------------+
| BINARY 'Cat'               |
+----------------------------+
| 0x436174                   |
+----------------------------+
1 row in set, 1 warning (0.00 sec)

We kunnen zien dat het goed werkte, maar we kregen ook een waarschuwing.

Ik heb dat uitgevoerd in MySQL 8.0.27 en dus kreeg ik de waarschuwing. Als u het in een eerdere versie van MySQL uitvoert, krijgt u waarschijnlijk geen waarschuwing.

Laten we de waarschuwing eens bekijken:

SHOW WARNINGS;

Resultaat:

+---------+------+----------------------------------------------------------------------------------------------+
| Level   | Code | Message                                                                                      |
+---------+------+----------------------------------------------------------------------------------------------+
| Warning | 1287 | 'BINARY expr' is deprecated and will be removed in a future release. Please use CAST instead |
+---------+------+----------------------------------------------------------------------------------------------+

Dit is in overeenstemming met de release-opmerkingen van MySQL 8.0.27 waarin wordt uitgelegd:

De BINARY operator is nu verouderd en kan in een toekomstige release van MySQL worden verwijderd. Gebruik van BINARY veroorzaakt nu een waarschuwing. Gebruik CAST(... AS BINARY) in plaats daarvan.

Oplossing

Zoals het waarschuwingsbericht aangeeft, kunnen we de waarschuwing verwijderen door de CAST() te gebruiken functie in plaats van de BINARY operator:

SELECT CAST('Cat' AS BINARY);

Resultaat:

+----------------------------------------------+
| CAST('Cat' AS BINARY)                        |
+----------------------------------------------+
| 0x436174                                     |
+----------------------------------------------+
1 row in set (0.00 sec)

De kat is nu omgezet naar binair zonder waarschuwingen.

U kunt ook CONVERT() . gebruiken in plaats van CAST() :

SELECT CONVERT('Cat' USING BINARY);

Resultaat:

+----------------------------------------------------------+
| CONVERT('Cat' USING BINARY)                              |
+----------------------------------------------------------+
| 0x436174                                                 |
+----------------------------------------------------------+
1 row in set (0.00 sec)

Zelfde resultaat.


  1. bijna synatx-fout (code 1) voeg Android SQLite in

  2. Introductie van nieuwe functie - Deadlock-analyse

  3. PostgreSQL 11:Patchrecensenten voor het partitioneren van patches

  4. Hoe tabelwaardeparameters door te geven aan de opgeslagen procedure vanuit .net-code