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ụngBINARY
bây giờ gây ra một cảnh báo. Sử dụngCAST(... 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ự.