数据库int字段超限

今天碰到了一个问题,数据库int字段超限

错误:

我定义的是int(11)然后存的数字是3999990394,发现存不进去,最开始以为是长度不够,然后给改成了int(16),发现还是报错。
错误提示:

### Cause: com.mysql.jdbc.MysqlDataTruncation: Data truncation: Out of range value for column '字段名' at row 1; 
SQL []; Data truncation: Out of range value for column '字段名' at row 1; 
nested exception is com.mysql.jdbc.MysqlDataTruncation: Data truncation: Out of range value for column '字段名' at row 1

尝试

其实以前我就对int(11)中int后边的11不是很明白,创建表的时候说的是长度,所以就理所当然的被我当做是数字的长度,但是我把长度改大之后还是报错,所以应该还是我没理解对。然后我再把int(11)改成bigint(11)可以存储成功,然后把bigint(11)改为bigint(1)还是可以存储成功。

原因

其实在数据库中定义字段类型的时候,int(x)中的X真没必要写出来,因为X不起任何作用。类似,bigint(x)也一样,写X与不写应该都是一个效果,其在数据库中所能存储的最大值只是与其自己本身表示的字段长度有关。但是varchar(x)中的x是有作用的,起到限制字符串长度的作用。

总结

类似于int(x)、bigint(x)中的x其实没必要写,或者写了也没什么作用,其储的最大值只是与其自己本身表示的字段长度有关。所以把int(x)改为bigint(x),就不会再报错了。

以上总结如有疑问,欢迎探讨、如有错误,欢迎指出

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,767评论 18 399
  • A.字段类型介绍 不同的关系型数据库在字段类型的具体化上差异较多,这里无法一一详述,但具体化的字段类型再多,无外乎...
    SnowflakeCloud阅读 11,307评论 1 12
  • MySQL5.6从零开始学 第一章 初始mysql 1.1数据库基础 数据库是由一批数据构成的有序的集合,这些数据...
    星期四晚八点阅读 1,187评论 0 4
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,991评论 19 139
  • 耐心,是检验真爱的第一标准。 当我一提出这个观点。突然发现,这就像是一个公式,可以把我们感觉拿不准的所有事装进来,...
    美佳佳的名字叫刘佳阅读 953评论 4 0