Mysql
 sql >> Base de données >  >> RDS >> Mysql

Correction de l'avertissement MySQL 1287 :"BINARY expr" est obsolète et sera supprimé dans une future version

Si vous obtenez le numéro d'avertissement 1287 indiquant 'BINARY expr' est obsolète et sera supprimé dans une future version. Veuillez utiliser CAST à la place lors de l'exécution d'une requête dans MySQL, c'est parce que vous utilisez le BINARY opérateur.

Le BINARY est obsolète depuis MySQL 8.0.27.

Pour résoudre le problème, convertissez la valeur en binaire à l'aide de CAST() fonction à la place.

Exemple d'avertissement

Voici un exemple de code qui génère l'avertissement :

SELECT BINARY 'Cat';

Résultat :

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

Nous pouvons voir que cela a bien fonctionné, mais nous avons également reçu un avertissement.

J'ai exécuté cela dans MySQL 8.0.27 et j'ai donc reçu l'avertissement. Si vous l'exécutez dans une version antérieure de MySQL, vous ne recevrez probablement pas l'avertissement.

Vérifions l'avertissement :

SHOW WARNINGS;

Résultat :

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

Ceci est conforme aux notes de version de MySQL 8.0.27 qui expliquent :

Le BINARY est désormais obsolète et susceptible d'être supprimé dans une future version de MySQL. Utilisation de BINARY provoque maintenant un avertissement. Utilisez CAST(... AS BINARY) à la place.

Solution

Comme le message d'avertissement y fait allusion, nous pouvons nous débarrasser de l'avertissement en utilisant le CAST() fonction au lieu du BINARY opérateur :

SELECT CAST('Cat' AS BINARY);

Résultat :

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

Le chat a maintenant été converti en binaire sans produire aucun avertissement.

Vous pouvez également utiliser CONVERT() au lieu de CAST() :

SELECT CONVERT('Cat' USING BINARY);

Résultat :

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

Même résultat.