今天在执行这样一条语句时:

SELECT store - freez AS less FROM `products`;

报如下错误:

Data truncation: BIGINT UNSIGNED value is out of range in '(`products`.`store` - `products`.`freez`)'

后经网上一查,得知是两数相减结果可能为负数导致。详细原因分析见:http://tech.it168.com/a2012/0808/1382/000001382732.shtml

MySQL关于“SQL服务器模式”的介绍在5.3.2章节。

那么解决我遇到的这个问题的方法就是,在执行此SQL语句前,设置下sql_mode:

SET sql_mode='NO_UNSIGNED_SUBTRACTION';
04-26 14:43