我正在try 使用GORM将我的模型迁移到PostgreSQL数据库.但GORM不会在表中生成字符串列.以下是我的模特:

type Task struct {
   gorm.Model
   Answer    float64
   TaskParts []TaskPart `gorm:"foreignKey:TaskId"`
}

type TaskPart struct {
   gorm.Model
   Answer float64
   Items  []BackpackTaskItem `gorm:"foreignKey:TaskPartId"`
   TaskId uint
}

type BackpackTaskItem struct {
   gorm.Model
   Weight     float64
   Price      float64
   IsFixed    bool
   TaskPartId uint
}

type TaskUserSolution struct {
   gorm.Model
   TaskPartId uint
   TaskPart   TaskPart `gorm:"foreignKey:TaskPartId;references:ID"`
   UserId     uint
   User       User `gorm:"foreignKey:UserId;references:ID"`
}

type User struct {
   gorm.Model
   username string
   password string
}

然后我运行下面这行代码:

err = db.AutoMigrate(&Task{}, &TaskPart{}, &BackpackTaskItem{}, &TaskUserSolution{}, &User{})

它没有给我任何错误,并成功创建表.但是对于表用户,没有字符串列(usernamepassword).它只有GORM Coumns(id、Created_Date、Delete_Date、UPDATED_Date).

这是一个错误,还是我做错了什么?

我的Go版本是最新的.我try 向其他模型添加字符串字段,但它也没有创建字符串列.

我完全扔掉了桌子,但它没有帮助.

来自go.mod的GORM版本:

gorm.io/driver/postgres v1.4.5
gorm.io/gorm v1.24.2

推荐答案

在变量名开头使用小写LATH使其成为私有,在声明时在变量名开头使用大写字母

100

 type User struct {
    gorm.Model
    Username string 
    Password string 
 }

100

enter image description here

Postgresql相关问答推荐

Keycloak和PostgreSQL

在Ubuntu 18.04 Bionic上安装PostgreSQL(已删除回购)

postgres 不同类型的更新

Postgres 生成的列不是不可变的

如何在 kubernetes 中安全地重启 postgresql 容器?

在 jOOQ 中使用 $$ 引用字符串

如何判断上次在 TimescaleDB 上运行连续聚合作业(job)的时间

PostgresQL:获取两个数组之间的对应数量

如何将 JSONB 对象数组合并为 PostgreSQL 中的单个对象

PostgreSQL:如何避免被零除?

用于生产的 Rails 性能调优?

包含受先前 DELETE 影响的行数的变量?

如何确定 NULL 是否包含在 Postgres 的数组中?

在 PostgreSQL 中显示正在运行的查询的全文

Postgres NOT IN (null) 没有结果

psql 致命角色不存在

PostgreSQL:如何在用户级别设置 search_path?

使用 Homebrew 安装 icu4c 版本 63

处理用户发送的string contains null byte

在 Select (PostgreSQL/pgAdmin) 中将布尔值返回为 TRUE 或 FALSE