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

BIGINT UNSIGNED VALUE nằm ngoài phạm vi SQL của tôi

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 .



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cách viết truy vấn tham gia trong API Volusion

  2. PHP mySQL kiểm tra xem tên người dùng và mật khẩu có trong cơ sở dữ liệu không

  3. Lưu trữ tên người dùng và mật khẩu trong cơ sở dữ liệu có an toàn không?

  4. điều chỉnh múi giờ với SQL

  5. Ví dụ về PERIOD_DIFF () - MySQL