sql >> Database >  >> RDS >> Mysql

BIGINT NIET-ONDERTEKENDE WAARDE IS buiten bereik Mijn SQL

Lees "Afhandeling buiten bereik en overloop ".
Er staat:

mysql> SELECT 9223372036854775807 + 1;

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

Om de bewerking in dit geval te laten slagen, converteert u de waarde naar unsigned;

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

Een wijziging in een deel van uw zoekopdracht, zoals hieronder, zou het probleem oplossen.

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

Anders kan het nodig zijn om de sql_mode . te wijzigen op niet-ondertekende operaties.

mysql> SET sql_mode = 'NO_UNSIGNED_SUBTRACTION';

en voer vervolgens uw zoekopdracht uit om de gewenste uitvoer te krijgen.

Zie ook een soortgelijk bericht beantwoord op een forum

  1. Combineren van INSERT-instructies in een gegevensmodificerende CTE met een CASE-expressie

  2. Hoe een opgeslagen functie op MySQL op de juiste manier in een lus te plaatsen?

  3. Knee-Jerk Wait-statistieken:PAGEIOLATCH_SH

  4. Hoe maak ik nog een MySQL auto-increment kolom?