Mysql
 sql >> Base de données >  >> RDS >> Mysql

BIGINT UNSIGNED VALUE IS out of range Mon SQL

Veuillez lire "Gestion hors plage et débordement ".
Il est écrit :

mysql> SELECT 9223372036854775807 + 1;

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

Pour permettre à l'opération de réussir dans ce cas, convertissez la valeur en non signé ;

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

Une modification d'une partie de votre requête, comme suit, résoudrait le problème.

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

Sinon, vous devrez peut-être modifier le sql_mode sur les opérations non signées.

mysql> SET sql_mode = 'NO_UNSIGNED_SUBTRACTION';

puis exécutez votre requête pour obtenir le résultat souhaité.

Voir aussi une réponse similaire sur un forum ici .