sql >> データベース >  >> RDS >> Mysql

BIGINTUNSIGNEDVALUEが範囲外ですMySQL

    <」をお読みくださいem>範囲外およびオーバーフロー処理 "。
    それは言う:

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

    この場合に操作を成功させるには、値をunsignedに変換します;

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

    次のようにクエリの一部を変更すると、問題が解決します。

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

    それ以外の場合は、sql_modeを変更する必要がある場合があります 署名されていない操作について。

    mysql> SET sql_mode = 'NO_UNSIGNED_SUBTRACTION';
    

    次に、クエリを実行して目的の出力を取得します。

    フォーラムで回答された同様の投稿も参照してください

    1. FlySpeedSQLクエリをSalesforce.comに接続する

    2. Ruby on Rails3OSXのソケット'/tmp/mysql.sock'を介してローカルMySQLサーバーに接続できません

    3. MariaDBのMIN()関数

    4. Laravel 5:整合性制約違反:1452子行を追加または更新できません:外部キー制約が失敗します