【发布时间】:2021-08-28 15:02:06
【问题描述】:
我有一个问题:
我在 GO 中有这个结构:
type Person struc{
name string
age int64
}
我想将它保存在一个名为 varchar(255) 和 age int(11) 的 MYSQL 表中
我正在使用 ExecContext 函数,但它返回错误 1265:第 1 行的列“年龄”的数据被截断
如果有人可以帮助我,那就太好了,这是示例,不是真实数据,但实际上是问题所在
【问题讨论】:
-
编辑问题以显示对 ExecContext 的调用以及两个字段的实际值。
-
你用的是gorm吗?使用反射的 API 通常不会访问小写字段。
-
Go int64 比 mysql INT 范围更广。您正在尝试存储一个大于 MYSQL 中可能的最大值(或小于最小值)的值。值得怀疑的是,这样的值是否会是一个人的有效年龄,因此您可能在某个地方遇到了一些额外的错误。您是否尝试过打印出您存储的值?
-
LOL - 你用什么时间单位来测量这个人的年龄,皮秒? :-)
-
INT在 MySQL 中是 32 位的。对于 64 位,您需要BIGINT数据类型。一个年龄需要超过 32 位(甚至 8 位,即 -128 到 127)会使您的数据非常可疑。