You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python使用mysql.connector插入大整数时SQL自动变更数值的问题

问题原因
  • MySQL中INTEGER(即INT)类型为有符号32位整数,存储上限为2^31 - 1 = 2147483647,你插入的数值25683838382092010098988远超过该上限。
  • 字段定义里的INTEGER(255)中的255是显示宽度,和存储容量没有任何关系,不会提升数值存储上限。
  • 当MySQL未开启严格SQL模式时,插入超出字段类型上限的数值会自动截断为该类型的最大允许值,不会抛出错误,所以最终存储的是2147483647。
解决方案

根据你的数值大小和使用场景选择对应方案即可:

  • 若后续插入的数值不超过9223372036854775807(有符号64位整数上限),将字段类型替换为BIGINT即可,建表语句修改为:
CREATE TABLE cleaned_data (myid VARCHAR(255), mynum BIGINT)
  • 若数值超过BIGINT上限、且需要做数值运算:使用DECIMAL类型,指定足够的精度即可,比如要存最多30位整数就定义为DECIMAL(30,0)(第二个参数0表示没有小数位),建表语句示例:
CREATE TABLE cleaned_data (myid VARCHAR(255), mynum DECIMAL(30,0))
  • 若仅需存储展示、不需要做加减比较等数值计算:可以直接用VARCHAR类型存储整数字符串,不会出现溢出问题。

可选优化:建议开启MySQL严格模式,插入溢出数值时会直接抛出错误,避免静默截断导致数据异常无法感知。

内容的提问来源于stack exchange,提问作者myname

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 22:06:02