这是我的 go 模型
package models
import (
"time"
"gorm.io/gorm"
)
type VID uint
type CompanyNames struct {
Id VID `json:"id,omitempty"`
Name string `json:"name,omitempty"`
CreateDate time.Time `json:"CreateDate,omitempty"`
ModifyDate time.Time `json:"ModifyDate,omitempty"`
}
这是我的存储库(从数据库检索数据):
func (m *Repo) Read(id models.VID) (*models.CompanyNames, error) {
var (
cn = &models.CompanyNames{}
)
err := m.db.Debug().Table("CompanyNames").First(cn, &id).Error
if err != nil {
return nil, err
}
return cn, err
}
在“http”上,我用 echo 编写此代码
func NewHttp(e *echo.Group, lg *Logic) {
g := e.Group("/companyname")
g.GET("", readAll)
g.GET("/:Id", read)
logic = lg
}
当我调用 ReadAll 记录完全检索数据时,这意味着我已正确连接到数据库,但是当我尝试通过“id”获取数据时出现错误:
mssql: Invalid column name 'id'.
这是我的错误吗 另一只手在我的结构中将 id 作为注释,如下所示:>
type CompanyNames struct {
//Id VID `json:"id,omitempty"`
Name string `json:"name,omitempty"`
CreateDate time.Time `json:"CreateDate,omitempty"`
ModifyDate time.Time `json:"ModifyDate,omitempty"`
}
收到新错误
mssql: Invalid column name 'name'. [2690.814ms] [rows:0] SELECT * FROM "CompanyNames" WHERE "CompanyNames"."name" = '1' ORDER BY "CompanyNames"."id" OFFSET 0 ROW FETCH NEXT 1 ROWS ONLY
更新:
func Cunnection() (*gorm.DB, 错误) { 变量( 错误错误 db *gorm.DB ) dsn := "sqlserver://DbUser: [email protected] :1433?database=myDb"
db, err = gorm.Open(sqlserver.Open(dsn), &gorm.Config{})
if err != nil {
return nil, err
}
// err = db.Debug().AutoMigrate(&models.CompanyNameModel{})
// if err != nil {
// return nil, err
// }
return db, nil
}
最佳答案
阅读您自己的答案后,我发现了您的问题。正如上面的评论所说,如果您显示表结构,就更容易找到问题。
您的查询指定的列名称是 Id
,并且您的结构未显式指定此名称。根据Grom convention ,您的 Id
字段将转换为 id
。这个问题可以通过添加 tags 来解决.
例如:
package models
import (
"time"
"gorm.io/gorm"
)
type VID uint
type CompanyNames struct {
Id VID `json:"id,omitempty" gorm:"column:Id"`
Name string `json:"name,omitempty" gorm:"column:Name"`
}
关于sql - 在 go - gorm "mssql: Invalid column name ' id',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73207946/