mysql - 错误 1264 (22003):第 1 行的“金额”列的值超出范围
问题描述
使用此命令:
mysql> insert into irctc_cap ( lid,amount,type) VALUES (296,-1000,128);
ERROR 1264 (22003): Out of range value for column 'amount' at row 1
Mysql 版本:Ver 14.14 Distrib 5.7.19,
根据警告#1264:mysql中的超出范围错误我看到这个问题不应该出现,因为数量length
为12,4
解决方案
如果数据类型是,这意味着总共DECIMAL(5,2)
五位数字,其中两位在小数点右侧。所以你可以使用的最大值是 999.99,最小值是 -999.99。这些是您最多可以容纳五位数。
如果您不使用严格模式,则会生成警告并将您尝试使用的值截断为五位数:
mysql> insert into irctc_cap values (296,-1000,128);
Query OK, 1 row affected, 1 warning (0.02 sec)
mysql> show warnings;
+---------+------+-------------------------------------------------+
| Level | Code | Message |
+---------+------+-------------------------------------------------+
| Warning | 1264 | Out of range value for column 'amount' at row 1 |
+---------+------+-------------------------------------------------+
1 row in set (0.00 sec)
mysql> select * from irctc_cap;
+------+---------+------+
| lid | amount | type |
+------+---------+------+
| 296 | -999.99 | 128 |
+------+---------+------+
如果使用严格模式,警告会变成错误:
mysql> set sql_mode=strict_all_tables;
Query OK, 0 rows affected (0.00 sec)
mysql> insert into irctc_cap values (296,-1000,128);
ERROR 1264 (22003): Out of range value for column 'amount' at row 1
我不确定为什么 phpMyAdmin 显示错误的数据类型。
使用DESCRIBE
orSHOW CREATE TABLE
或SELECT column_type FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME='irctc_cap' AND COLUMN_NAME='amount'
获取列的准确定义。
推荐阅读
- java - 如何在 node.js 中使用 SOAP 成功向 adwords url 发出请求?
- python - 在 Python 中传递给函数时,创建嵌套字典的副本或直接访问它是否更快?
- amazon-web-services - 如何恢复与 aws cli 的会话?
- javascript - 我做了一个简单的排序功能,但它不起作用
- django - Django按相关字段过滤
- javascript - Google.script.run 功能在 firefox、safari 中失败
- dataframe - 2个数据框之间的匹配行
- r - 在 r 中提取不同值的最快方法
- angular - Angular - 如何将数据从一个组件传递到另一个
- python - 为什么ipynb文件在不同的电脑上打开的大小不同?