RETURNING 必须包含至少一个值
RETURNING must contain at least one value
我正在学习使用 PostgreSQL 和 GORM。麻烦来得比较快,感觉好像只有我一个人有这个问题。
在这里,我正在创建一个结构,对其进行实例化,然后尝试将其写入数据库。然而,它 returns 一个错误:
pq: RETURNING must contain at least one value
尝试谷歌搜索,我唯一找到的是 Postgres 源代码,它可能是中文的。
源代码:
db, err := gorm.Open("postgres", "user=postgres dbname=testdb sslmode=disable password=qwerty")
if err != nil {
panic(err.Error())
}
defer db.Close()
database := db.DB()
err = database.Ping()
if err != nil {
panic(err.Error())
}
db.AutoMigrate(&Currency{})
fmt.Println("Connection to PostgreSQL was successful!")
testCur := Currency{"shekels", 20}
if db.NewRecord(testCur) {
err := db.Create(&testCur).Error
if err != nil {
panic(err.Error())
}
}
结构:
type Currency struct {
name string
rate uint
}
是的,必须使用 Postgres 和 GORM 来完成。数据库是全新的,空的。
值得注意的是您的 struct
仅包含非导出字段:
type Currency struct {
name string
rate uint
}
Gorm 都不会看到这些字段(它可能使用反射将您的 struct
转换为 SQL)。这将导致 Gorm 尝试用 RETURNING
子句做一个空的 INSERT
来取回一些东西,但是,由于 Gorm 看不到要插入的任何东西,它不会在 RETURNING 子句中要求任何东西还有你的相当令人困惑的错误。
我认为如果您修复 struct
以导出这些字段,您的运气会更好:
type Currency struct {
Name string
Rate uint
}
我正在学习使用 PostgreSQL 和 GORM。麻烦来得比较快,感觉好像只有我一个人有这个问题。
在这里,我正在创建一个结构,对其进行实例化,然后尝试将其写入数据库。然而,它 returns 一个错误:
pq: RETURNING must contain at least one value
尝试谷歌搜索,我唯一找到的是 Postgres 源代码,它可能是中文的。
源代码:
db, err := gorm.Open("postgres", "user=postgres dbname=testdb sslmode=disable password=qwerty")
if err != nil {
panic(err.Error())
}
defer db.Close()
database := db.DB()
err = database.Ping()
if err != nil {
panic(err.Error())
}
db.AutoMigrate(&Currency{})
fmt.Println("Connection to PostgreSQL was successful!")
testCur := Currency{"shekels", 20}
if db.NewRecord(testCur) {
err := db.Create(&testCur).Error
if err != nil {
panic(err.Error())
}
}
结构:
type Currency struct {
name string
rate uint
}
是的,必须使用 Postgres 和 GORM 来完成。数据库是全新的,空的。
值得注意的是您的 struct
仅包含非导出字段:
type Currency struct {
name string
rate uint
}
Gorm 都不会看到这些字段(它可能使用反射将您的 struct
转换为 SQL)。这将导致 Gorm 尝试用 RETURNING
子句做一个空的 INSERT
来取回一些东西,但是,由于 Gorm 看不到要插入的任何东西,它不会在 RETURNING 子句中要求任何东西还有你的相当令人困惑的错误。
我认为如果您修复 struct
以导出这些字段,您的运气会更好:
type Currency struct {
Name string
Rate uint
}