没有这样的专栏,SQLite GORM
No such column, SQLite GORM
以下是流派模型的结构:
type Genre struct {
ImageId int
GenreType string
}
我正在执行以下查询以查找 ImageId 的所有 genreType。代码如下:
func getGenresOfImage(DB *gorm.DB, w http.ResponseWriter, imageId int) ([]string, error) {
var genres []string
var allGenres []models.Genre
genresOfCurrentImage := DB.Where("ImageId = ?", strconv.Itoa(imageId)).Find(&allGenres)
genreRows, err := genresOfCurrentImage.Rows()
if err != nil {
SendErrorResponse(w, http.StatusInternalServerError, err.Error())
// error is returned here
return genres, err
}
我收到以下错误:
Images.go:46 no such column: ImageId
[0.908ms] [rows:0] SELECT * FROM `genres` WHERE ImageId = "1"
我在查找与 imageId 关联的所有类型时使用的语法是否错误?感谢您的帮助!
您的列名称很可能是 image_id
。
正如 gorm 文档所说:
Column db name uses the field’s name’s snake_case by convention.
当您使用 gorm 的自动迁移功能时,表将以这种方式生成。
有关更多信息,请参阅:https://gorm.io/docs/conventions.html#Column-Name
如果您查看默认命名策略 here,您会发现查询中需要 image_id
列名称(假设 image_id
是您的列名称在数据库中)。
考虑到这一点,您可以尝试的选项很少:
在Where
方法中使用image_id
:
DB.Where("image_id = ?", strconv.Itoa(imageId)).Find(&allGenres)
使用struct将条件传递给Where
方法:
DB.Where(&models.Genre{ ImageID: imageId}).Find(&allGenres)
或者,如果您在数据库中的列实际命名为 ImageId
,您可以将其添加到 models.Genre
结构中:
type Genre struct {
// other fields
ImageID int `gorm:"column:ImageId"`
}
以下是流派模型的结构:
type Genre struct {
ImageId int
GenreType string
}
我正在执行以下查询以查找 ImageId 的所有 genreType。代码如下:
func getGenresOfImage(DB *gorm.DB, w http.ResponseWriter, imageId int) ([]string, error) {
var genres []string
var allGenres []models.Genre
genresOfCurrentImage := DB.Where("ImageId = ?", strconv.Itoa(imageId)).Find(&allGenres)
genreRows, err := genresOfCurrentImage.Rows()
if err != nil {
SendErrorResponse(w, http.StatusInternalServerError, err.Error())
// error is returned here
return genres, err
}
我收到以下错误:
Images.go:46 no such column: ImageId
[0.908ms] [rows:0] SELECT * FROM `genres` WHERE ImageId = "1"
我在查找与 imageId 关联的所有类型时使用的语法是否错误?感谢您的帮助!
您的列名称很可能是 image_id
。
正如 gorm 文档所说:
Column db name uses the field’s name’s snake_case by convention.
当您使用 gorm 的自动迁移功能时,表将以这种方式生成。
有关更多信息,请参阅:https://gorm.io/docs/conventions.html#Column-Name
如果您查看默认命名策略 here,您会发现查询中需要 image_id
列名称(假设 image_id
是您的列名称在数据库中)。
考虑到这一点,您可以尝试的选项很少:
在Where
方法中使用image_id
:
DB.Where("image_id = ?", strconv.Itoa(imageId)).Find(&allGenres)
使用struct将条件传递给Where
方法:
DB.Where(&models.Genre{ ImageID: imageId}).Find(&allGenres)
或者,如果您在数据库中的列实际命名为 ImageId
,您可以将其添加到 models.Genre
结构中:
type Genre struct {
// other fields
ImageID int `gorm:"column:ImageId"`
}