将客户端从MySQL 5.4升级到5.7后,我开始收到“BIGINT UNSIGNED值超出范围...”错误。我编辑了my.cnf并设置了sql_mode =“NO_UNSIGNED_SUBTRACTION”,并使用了SHOW VARIABLES来确保它确实使用了该模式。这的确在应用程序,但今天一个unsigned int的列抛出同样的错误修复最初的问题(顺便说一句库存2)...SQL模式是NO_UNSIGNED_SUBTRACTION,但仍然超出范围错误
UPDATE table SET inventory = inventory - 1
我不明白为什么,因为我认为新的sql_mode将恢复行为到5.5之前?我不想开始在我的语句中强制执行所有操作,只是为了进行简单的算术操作,所以我脑海中的逻辑解决方案只是将所有无符号整数列转换为带符号的整数,但主自动递增键除外。
这是避免这些超出范围错误的最佳解决方案吗?