数据被截断和不正确的整数值错误

问题描述 投票:0回答:2

对于 GORM,我想使用

uuid
作为主键,而不是默认的递增整数。我的型号:

type User struct {
    ID       string `gorm:"primaryKey" sql:"type:uuid;primary_key;default:uuid_generate_v4()"`
    Username string `json:"username" gorm:"unique"`
    Password string `json:"password"`
}

// This is a Gorm hook.
func (u *User) BeforeCreate(tx *gorm.DB) error {
    u.ID = uuid.NewString()
    return nil
}

当我插入 SQLite 时,数据会被插入,但是当我插入 MySQL 数据库时,会出现错误:

  1. 错误 1265:第 1 行“id”列的数据被截断
  2. 错误 1366:整数值不正确:第 1 行的“id”列的“e2d63365-6876-4183-bd81-6deb3e3906e6”
  3. 错误 1264:第 1 行“id”列的值超出范围

GORM 正在创建的命令:

INSERT INTO `users` (`id`,`username`,`password`) VALUES ('4de44e7e-b658-4225-b654-296d4e60624c','joe_mama','supersecret')

我发现了其他关于此类错误的帖子,但它们都是以 SQL 为中心的,我真的无能为力,因为 Gorm 处理了这个问题。

mysql sql sqlite go go-gorm
2个回答
1
投票

按照@FanoFN的建议,我运行了以下命令:

SHOW CREATE TABLE users;

这显示了模型的架构,并且表明我的表使用的是我之前实现的旧架构。

解决方案最终只是删除用户表并重新迁移模型。


0
投票

谢谢,我也遇到了这个错误。我更新脚本以将类型 int 更改为 varchar(),但是当我运行“describe mytable”时,值的类型为 int。我放下桌子,然后它就顺利运行了。

© www.soinside.com 2019 - 2024. All rights reserved.