Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

BIGINT UNSIGNED VALUE ESTÁ fora do intervalo Meu SQL


Leia "Gerenciamento fora do intervalo e estouro ".
Diz:
mysql> SELECT 9223372036854775807 + 1;

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

Para permitir que a operação seja bem-sucedida nesse caso, converta o valor em não assinado;
mysql> SELECT CAST(9223372036854775807 AS UNSIGNED) + 1;
+-------------------------------------------+
| CAST(9223372036854775807 AS UNSIGNED) + 1 |
+-------------------------------------------+
|                       9223372036854775808 |
+-------------------------------------------+

Uma alteração em parte de sua consulta, como a seguir, resolveria o problema.
( CAST( quantity AS SIGNED ) - COUNT( game_moblist.spawn_id ) ) AS quantity_to_spawn

Caso contrário, você pode precisar alterar o sql_mode em operações não assinadas.
mysql> SET sql_mode = 'NO_UNSIGNED_SUBTRACTION';

e, em seguida, execute sua consulta para obter a saída desejada.

Veja também uma postagem semelhante respondida em um fórum aqui .