sql >> Base de Datos >  >> RDS >> Mysql

EL VALOR GRANDE SIN FIRMAR ESTÁ fuera de rango Mi SQL

Lea "Manejo de desbordamiento y fuera de rango ".
Dice:

mysql> SELECT 9223372036854775807 + 1;

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

Para permitir que la operación tenga éxito en este caso, convierta el valor a sin firmar;

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

Un cambio en parte de su consulta, como sigue, resolvería el problema.

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

De lo contrario, es posible que deba cambiar el sql_mode en operaciones no firmadas.

mysql> SET sql_mode = 'NO_UNSIGNED_SUBTRACTION';

y luego ejecute su consulta para obtener el resultado deseado.

Vea también una publicación similar respondida en un foro aquí .