Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Khắc phục cảnh báo MySQL 1287:‘BINARY expr’ không được dùng nữa và sẽ bị xóa trong bản phát hành trong tương lai

Nếu bạn nhận được cảnh báo số 1287 có nội dung ‘BINARY expr’ không được dùng nữa và sẽ bị xóa trong bản phát hành trong tương lai. Vui lòng sử dụng CAST thay thế khi chạy một truy vấn trong MySQL, đó là do bạn đang sử dụng BINARY nhà điều hành.

BINARY toán tử không được chấp nhận kể từ MySQL 8.0.27.

Để khắc phục sự cố, hãy truyền giá trị sang hệ nhị phân bằng cách sử dụng CAST() chức năng thay thế.

Ví dụ về Cảnh báo

Dưới đây là một ví dụ về mã tạo ra cảnh báo:

SELECT BINARY 'Cat';

Kết quả:

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

Chúng tôi có thể thấy rằng nó hoạt động tốt, nhưng chúng tôi cũng nhận được một cảnh báo.

Tôi đã chạy điều đó trong MySQL 8.0.27 và vì vậy tôi nhận được cảnh báo. Nếu bạn chạy nó trong phiên bản MySQL cũ hơn, có thể bạn sẽ không nhận được cảnh báo.

Hãy kiểm tra cảnh báo:

SHOW WARNINGS;

Kết quả:

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

Điều này phù hợp với ghi chú phát hành MySQL 8.0.27 giải thích:

BINARY toán tử hiện không được dùng nữa và có thể bị xóa trong bản phát hành MySQL trong tương lai. Sử dụng BINARY bây giờ gây ra một cảnh báo. Sử dụng CAST(... AS BINARY) thay vào đó.

Giải pháp

Như thông báo cảnh báo ám chỉ đến, chúng ta có thể loại bỏ cảnh báo bằng cách sử dụng CAST() thay vì BINARY nhà điều hành:

SELECT CAST('Cat' AS BINARY);

Kết quả:

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

Con mèo hiện đã được chuyển đổi sang dạng nhị phân mà không đưa ra bất kỳ cảnh báo nào.

Ngoài ra, bạn có thể sử dụng CONVERT() thay vì CAST() :

SELECT CONVERT('Cat' USING BINARY);

Kết quả:

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

Kết quả tương tự.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MySQL có tự động lập chỉ mục các cột khóa ngoại không?

  2. Làm việc xung quanh lỗi MySQL Đã tìm thấy khóa chết khi cố gắng lấy khóa; thử bắt đầu lại giao dịch

  3. Ví dụ DAY () - MySQL

  4. Tạo người dùng trên MySQL

  5. Chuyển đổi MySQL sang SQlite