sql >> Databáze >  >> RDS >> Mysql

BIGINT UNSIGNED VALUE JE mimo rozsah Můj SQL

Přečtěte si prosím "Ošetření mimo rozsah a přetečení ".
Je tam uvedeno:

mysql> SELECT 9223372036854775807 + 1;

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

Chcete-li, aby operace v tomto případě uspěla, převeďte hodnotu na unsigned;

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

Změna části vašeho dotazu, jak je uvedeno níže, by problém vyřešila.

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

V opačném případě budete možná muset změnit sql_mode na nepodepsané operace.

mysql> SET sql_mode = 'NO_UNSIGNED_SUBTRACTION';

a poté spusťte dotaz, abyste získali požadovaný výstup.

Podívejte se také na podobný příspěvek zodpovězený na fóru

  1. Ukládání raiserror zprávy SqlServeru v C#

  2. Proč postgres nevytváří databázi?

  3. dobrý postgresql klient pro Windows?

  4. MySQL – funkce FOUND_ROWS() pro celkový počet ovlivněných řádků