Mysql
 sql >> Baza danych >  >> RDS >> Mysql

BIGINT UNSIGNED VALUE JEST poza zakresem Mój SQL

Przeczytaj „Obsługa poza zasięgiem i przepełnienie ".
To mówi:

mysql> SELECT 9223372036854775807 + 1;

ERROR 1690 (22003): BIGINT value is out of range in '(9223372036854775807 + 1)'

Aby operacja powiodła się w tym przypadku, przekonwertuj wartość na unsigned;

mysql> SELECT CAST(9223372036854775807 AS UNSIGNED) + 1;
+-------------------------------------------+
| CAST(9223372036854775807 AS UNSIGNED) + 1 |
+-------------------------------------------+
|                       9223372036854775808 |
+-------------------------------------------+

Zmiana części zapytania, jak poniżej, rozwiązałaby problem.

( CAST( quantity AS SIGNED ) - COUNT( game_moblist.spawn_id ) ) AS quantity_to_spawn

W przeciwnym razie możesz wymagać zmiany sql_mode o niepodpisanych operacjach.

mysql> SET sql_mode = 'NO_UNSIGNED_SUBTRACTION';

a następnie uruchom zapytanie, aby uzyskać żądany wynik.

Zobacz także odpowiedź na podobny wpis na forum Qved=0 .



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak zoptymalizować to skomplikowane zapytanie EAV MYSQL?

  2. Jak wstawić NULL w mysql, zwłaszcza INT dataType?

  3. Zapytanie MySQL nie działa podczas używania zmiennej php w klauzuli where

  4. funkcja explode() używająca SEPARATORA GRUPY

  5. Eksportuj dane z bazy danych MySQL