Vui lòng đọc " Xử lý ngoài phạm vi và tràn
".
Nó nói:
mysql> SELECT 9223372036854775807 + 1;
ERROR 1690 (22003): BIGINT value is out of range in '(9223372036854775807 + 1)'
Để cho phép hoạt động thành công trong trường hợp này, hãy chuyển đổi giá trị thành không dấu;
mysql> SELECT CAST(9223372036854775807 AS UNSIGNED) + 1;
+-------------------------------------------+
| CAST(9223372036854775807 AS UNSIGNED) + 1 |
+-------------------------------------------+
| 9223372036854775808 |
+-------------------------------------------+
Thay đổi đối với một phần truy vấn của bạn, như sau, sẽ giải quyết được vấn đề.
( CAST( quantity AS SIGNED ) - COUNT( game_moblist.spawn_id ) ) AS quantity_to_spawn
Nếu không, bạn có thể yêu cầu thay đổi sql_mode
về các hoạt động chưa được ký.
mysql> SET sql_mode = 'NO_UNSIGNED_SUBTRACTION';
và sau đó chạy truy vấn của bạn để nhận được kết quả mong muốn.
Xem thêm một bài đăng tương tự được trả lời trên diễn đàn here .