已编辑我想覆盖GORM中的Id值字段,因为我也使用json进行marchal和unmarshall。 包装文章
import "github.com/jinzhu/gorm"
type Article struct {
gorm.Model
Id int `json:"id"`
Title string `json:"title"`
Description string `json:"description"`
Content string `json:"content"`
}
我希望像这样添加gorm属性
`gorm:"default:'galeone'"`
但它没有编译
package article
import "github.com/jinzhu/gorm"
type Article struct {
gorm.Model
Id uint `json:"id" sql:"AUTO_INCREMENT" gorm:"primary_key"`
Title string `json:"title"`
Description string `json:"description"`
Content string `json:"content"`
}
我在这里使用Gorm [https://github.com/jinzhu/gorm][1]
我正在
2016/12/21 15:17:48 DB Initialized successfully
(duplicate column name: id)
[2016-12-21 15:17:48]
(no such table: articles)
[2016-12-21 15:17:48]
这就是我创建数据库的方法,它正常工作,只想在文章结构上自动增加
package dbprovider
import (
"github.com/jinzhu/gorm"
_"github.com/jinzhu/gorm/dialects/sqlite"
"rest/article"
"log"
)
var db gorm.DB
var isInitialized bool
func InitDb() {
isInitialized = false
db, err := gorm.Open("sqlite3", "../../articles.db")
if (db != nil && err == nil) {
log.Print("Db Initialized")
isInitialized = true
} else {
isInitialized = false
defer db.Close()
log.Panic("DB not initialized")
}
}
func AddArticle(article *article.Article) {
if (isInitialized) {
db.Create(&article)
}
}
答案 0 :(得分:1)
首先。根据Office指南
gorm:"default:'galeone'"
是您的字段默认值
参考:gormDefaultValue 当你没有给出价值。 所以你的ID字段需要改变。因为你的默认值是字符串 但该字段是int
Id int `json:"id" gorm:"default:1"`
和func InitDb。重新定义变量db。编译或运行go程序时会发生错误。你需要换两行 1. var db gorm.DB - > var db * gorm.DB 2. func InitDb
func InitDb() {
isInitialized = false
//Change below code
var err interface{}
db, err = gorm.Open("sqlite3", "../../articles.db")
if (db != nil && err == nil) {
log.Print("Db Initialized")
isInitialized = true
} else {
isInitialized = false
defer db.Close()
log.Panic("DB not initialized")
}
}