mysql in 截断_MySQL十进制字段’数据在第1行的第x列被截断’问题

我有一个带小数(16,2)字段的mysql表.看起来像使用另一个十进制(16,2)字段字符串的加法操作可能会导致第1行问题的列x截断数据,这会在我的django项目中引发异常.

我知道该字段的乘法或除法运算会导致此问题,因为结果可能不适合十进制(16,2)定义,但加法和减法操作是否相同?

我的MySQL服务器版本是5.5.37-0ubuntu0.14.04.1.您可以从下面重现此问题:

MysqL> drop database test;

Query OK,1 row affected (0.10 sec)

MysqL> create database test;

Query OK,1 row affected (0.00 sec)

MysqL> use test;

Database changed

MysqL> create table t(price decimal(16,2));

Query OK,0 rows affected (0.16 sec)

MysqL> insert into t values('2004.74');

Query OK,1 row affected (0.03 sec)

MysqL> select * from t;

+---------+

| price |

+---------+

| 2004.74 |

+---------+

1 row in set (0.00 sec)

MysqL> update t set price = price + '0.09';

Query OK,1 row affected (0.05 sec)

Rows matched: 1 Changed: 1 Warnings: 0

MysqL> update t set price = price + '0.09';

Query OK,1 row affected,1 warning (0.03 sec)

Rows matched: 1 Changed: 1 Warnings: 1

MysqL> show warnings;

+-------+------+--------------------------------------------+

| Level | Code | Message |

+-------+------+--------------------------------------------+

| Note | 1265 | Data truncated for column 'price' at row 1 |

+-------+------+--------------------------------------------+

1 row in set (0.00 sec)

MysqL> select * from t;

+---------+

| price |

+---------+

| 2004.92 |

+---------+

1 row in set (0.00 sec)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值