登录
首页 >  Golang >  Go问答

截断数据和整数值错误

来源:stackoverflow

时间:2024-02-17 11:54:24 160浏览 收藏

欢迎各位小伙伴来到golang学习网,相聚于此都是缘哈哈哈!今天我给大家带来《截断数据和整数值错误》,这篇文章主要讲到等等知识,如果你对Golang相关的知识非常感兴趣或者正在自学,都可以关注我,我会持续更新相关文章!当然,有什么建议也欢迎在评论留言提出!一起学习!

问题内容

对于 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 处理了这个问题。


正确答案


根据@fanofn的建议,我运行了以下命令:

SHOW CREATE TABLE users;

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

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

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

今天带大家了解了的相关知识,希望对你有所帮助;关于Golang的技术知识我们会一点点深入介绍,欢迎大家关注golang学习网公众号,一起学习编程~

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>