最近刚跳槽到一个新单位,刚去第一天屁股还没坐热,甚至连入职手续都还没办好就先给我一个任务,让我尽快解决掉。
说是一个插入订单的时候插入报错了,跟踪代码最后发现是插入的时候数据库报Out of range value for id这个错误,由于这是第一次在项目中使用mysql,所以很多对mysql的问题更多还是依赖网上搜索。
根据字面意思是超出列最大范围,百度搜索,很多人都是说什么加大字段长度,可仔细一看超出范围的那一列是int类型,这怎么加长,int类型的最大范围都是固定的,所以加大长度行不通,后来将插入的sql语句调出来,发现id那一列使用的是last_insert_id(id)这个函数来解决的,会不会是这个产生的问题,又继续查这个函数是干嘛的,发现也不是这个函数产生的问题。
后来仔细看ddl,发现id自动是自增的,但是id那一列最大的才2000多,怎么可能超范围呢,各种可能的解决办法都试过一次后觉得问题应该还是出在自增那的问题,查查这个自增到底是怎么回事把。
后来使用show create table xxx命令后查看到id列的 auto_increament=4294967296了,哦原来问题出在这里了,自增列的起始值已经到了int类型的最大值,在插入的时候肯定是超出范围了,果断ALTER TABLE xxx AUTO_INCREMENT = 100,从100开始继续新增后,问题解决。
有时候遇到相同的错误可能原因并不一样,需要具体分析,当网上没有能解决自己问题的时候就要从自身找找问题,从最开始的时候下手,反而更能解决问题。另外吐槽一下百度,Out of range value for column这个关键字可能前几页的问题都一样,解决思路可能也都是互相抄袭。所以能翻墙的还是翻墙把
mysql的Out of range value for column错误解决
最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...