Search code examples
gobeego

Couldn't insert new article. Reason: %!(EXTRA sqlite3.Error=no such table: articles) Beego


Getting this error Couldn't insert new article. Reason: %!(EXTRA sqlite3.Error=no such table: articles when trying to add an article to table articles.

\ models.go

package models

type Article struct {
    Id     int    `form:"-"`
    Name   string `form:"name,text,name:" valid:"MinSize(5);MaxSize(20)"`
    Client string `form:"client,text,client:"`
    Url    string `form:"url,text,url:"`
}

func (a *Article) TableName() string {
    return "articles"
}

\ part of my Add function

if err == orm.ErrNoRows || err == orm.ErrMissPK {
     beego.Debug("No article found matching details supplied. Attempting to insert article: ", article)
     id, err := o.Insert(&article)
     if err == nil {
         msg := fmt.Sprintf("Article inserted with id:", id)
         beego.Debug(msg)
         flash.Notice(msg)
         flash.Store(&manage.Controller)
      } else {
         msg := fmt.Sprintf("Couldn't insert new article. Reason: ", err)
         beego.Debug(msg)
         flash.Error(msg)
         flash.Store(&manage.Controller)
      }
} else {
     beego.Debug("Article found matching details supplied. Cannot insert")
}

Please assist. I don't know what am doing wrong.


Solution

  • I got the answer, I need to Sync my database(similar with Django >> python manage.py makemigrations/migrate). So I edited my main function inside main.go to:

    func main() {
        err := orm.RunSyncdb("default", false, false)
        if err != nil {
            beego.Error(err)
        }
        beego.Run()
    }
    

    This works for me.