英文:
How to work around 'no LastInsertId available' using beego/orm
问题
我正在尝试使用https://github.com/astaxie/beego/tree/master/orm将一个struct
插入到PostgreSQL数据库中。这个操作应该很简单。
import "github.com/astaxie/beego/orm"
type Product struct {
ID string `orm:"pk"`
...
}
product := &Product{ID: productID}
_, err := orm.NewOrm().Insert(product)
if err != nil {
log.Fatal(err)
}
每当代码运行时,我一直收到no LastInsertId available
的错误(插入操作本身是成功的),但是程序崩溃了。
我理解这是由于我使用了https://www.github.com/lib/pq驱动程序,而它受到PostgreSQL的限制。
有没有办法使用beego/orm解决这个问题?
英文:
I am trying to use https://github.com/astaxie/beego/tree/master/orm to insert a struct
into a postgres database. The operation should be simple
import "github.com/astaxie/beego/orm"
type Product struct {
ID string `orm:"pk"`
...
}
product := &Product{ID: productID}
_, err := orm.NewOrm().Insert(product)
if err != nil {
log.Fatal(err)
}
I keep getting this; no LastInsertId available
whenever the code runs (the insert is otherwise successful) but I get a crash.
I understand is it due to postgresql limitations because I use https://www.github.com/lib/pq driver.
Is there I way to work around this using beego/orm?
答案1
得分: 1
如果崩溃是由于你的log.Fatal(err)
引起的,你可以通过检查和避免它来避免这种情况:
_, err := orm.NewOrm().Insert(product)
if err != nil {
if err.Error() == "no LastInsertId available" {
log.Println(err)
} else {
log.Fatal(err)
}
}
英文:
If the crash is being caused by your log.Fatal(err)
, you can avoid this by checking and avoiding it:
_, err := orm.NewOrm().Insert(product)
if err != nil {
if err.Error() == "no LastInsertId available" {
log.Println(err)
} else {
log.Fatal(err)
}
}
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论