Mysql
 sql >> Database >  >> RDS >> Mysql

BIGINT UNSIGNED VALUE IS out of range My SQL

Si prega di leggere "Gestione fuori campo e overflow ".
Dice:

mysql> SELECT 9223372036854775807 + 1;

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

Per consentire all'operazione di riuscire in questo caso, converti il ​​valore in unsigned;

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

Una modifica a una parte della tua query, come segue, risolverebbe il problema.

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

In caso contrario, potrebbe essere necessario modificare sql_mode sulle operazioni non firmate.

mysql> SET sql_mode = 'NO_UNSIGNED_SUBTRACTION';

e quindi esegui la query per ottenere l'output desiderato.

Vedi anche un post simile con risposta su un forum qui .