Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

自增字段tag缺失,迁移后,创建的表无自增属性,导致执行sql失败 #215

Open
wclssdn opened this issue Jun 23, 2022 · 7 comments

Comments

@wclssdn
Copy link
Contributor

wclssdn commented Jun 23, 2022

数据表中的主键是自增的,生成go文件后,tag中未包含自增的描述autoIncrement

ID       uint32 `gorm:"primaryKey;column:id;type:int unsigned;not null"`

当执行db. AutoMigrate后,插入一条数据会报错:

Could not save row: Error 1364: Field 'id' doesn't have a default value

gorm迁移的sql语句是:

CREATE TABLE `rank` (`id` int unsigned NOT NULL,PRIMARY KEY (`id`))

解决方案:在生成go文件的时候,把是否自增的信息写进tag中。

详细tag参考:https://gorm.io/zh_CN/docs/models.html#%E5%AD%97%E6%AE%B5%E6%A0%87%E7%AD%BE

经过了解,这是两个bug:

  1. gormt没有把autoIncrement写进tag中(不过,该实现还是要实现的吧~
  2. gorm没有实现autoIncrement (参考:使用"gorm.io/gen" 生成的结构体,在后来使用 "gorm.io/gorm" 还原数据库表结构时,表中的PrimaryKey缺少AutoIncrement go-gorm/gorm#5266
@xxjwxc
Copy link
Owner

xxjwxc commented Jun 23, 2022

好的,收到

@xxjwxc xxjwxc pinned this issue Jun 23, 2022
@wclssdn
Copy link
Contributor Author

wclssdn commented Jul 5, 2022

我提交gorm的修复pr没有被接受,因为改动不兼容其他的db。。。 放弃提交了。。。

@xxjwxc
Copy link
Owner

xxjwxc commented Jul 5, 2022

更新了下,请查看,未测试
fc112a7

@xxjwxc
Copy link
Owner

xxjwxc commented Jul 5, 2022

我提交gorm的修复pr没有被接受,因为改动不兼容其他的db。。。 放弃提交了。。。

我没有看到你的pr

@wclssdn
Copy link
Contributor Author

wclssdn commented Jul 6, 2022

我给关了。。。 go-gorm/gorm#5452

@wclssdn
Copy link
Contributor Author

wclssdn commented Jul 6, 2022

更新了下,请查看,未测试 fc112a7

你这个字段名字叫的不那么达意呀~ 哈哈哈哈 要么也跟gorm叫的一样。。。 autoIncrement 呢~

@xxjwxc
Copy link
Owner

xxjwxc commented Jul 6, 2022

这:3dea08f
gormt : gorm tools

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants