クライアントをMySQL 5.4から5.7にアップグレードすると、「BIGINT UNSIGNEDの値が範囲外です...」というエラーが発生しました。 my.cnfを編集してsql_mode = "NO_UNSIGNED_SUBTRACTION"を設定し、実際にそのモードを使用していることを確認するためにSHOW VARIABLESを使用しました。それは、unsigned int型の列は、私は新しいsql_modeの元に戻すだろうと思ったので、私は理由を理解していない...SQLモードはNO_UNSIGNED_SUBTRACTIONですが、範囲外のエラーが発生する
UPDATE table SET inventory = inventory - 1
(BTW在庫が2である)同じエラーがスローされ、今日のアプリケーションで、最初の問題を解決したがなかったですビヘイビアが5.5になる前に?単純な算術演算を行うために私の文ですべてをキャストしたくないので、論理的な解決策は、プライマリの自動インクリメントキーを除いて、すべての符号なしint colを符号付き整数に変換することだけです。
これは、範囲外のエラーをエスケープするための最良のソリューションですか?