当前位置: 首页 > 工具软件 > graceful > 使用案例 >

beego 2.0升级的巨坑,graceful错误

翟新
2023-12-01

一般的坑就不记录了,这里记录几个巨大的。

1.casbin

数据表变了(ptype字段名称大小写),所以要删掉原来的表或修改表字段

beegoormadapter 3.0如下

type CasbinRule struct {
	Id    int
	Ptype string
	V0    string
	V1    string
	V2    string
	V3    string
	V4    string
	V5    string
}

beegoormadapter 3.0之前如下:

type CasbinRule struct {
	Id    int
	PType string
	V0    string
	V1    string
	V2    string
	V3    string
	V4    string
	V5    string
}

2.main.go文件要引入

_ "github.com/3xxx/engineercms/routers"

否则路由出不来

3.route.go中cors要用

"github.com/beego/beego/v2/server/web/filter/cors"

4.beego的自动升级会加入

beego "github.com/beego/beego/v2/adapter"

 但是我们应该用下面这2行:

4-1.所有文件中beego要用web

"github.com/beego/beego/v2/server/web"
"github.com/beego/beego/v2/core/logs"

然后代码中的beego.……改成web.……

例如

beego.NewNamespace("/v1",
……
改成:
web.NewNamespace("/v1",
……

type ArticleController struct {
    // beego.Controller
	web.Controller
}

当然,如果你用官方的办法

beego "github.com/beego/beego/v2/server/web"

那么就不用改beego啦。

beego.Error()改成logs.Error()

5.不要用v2/adapter下的代码

"github.com/beego/beego/v2/adapter"

要用v2/server/web下的代码

"github.com/beego/beego/v2/server/web/context"
"github.com/beego/beego/v2/server/web/pagination"

原因见https://github.com/beego/beego/issues/4382

6.c.Input().Get()改成

c.GetString()
// beego.AppConfig.String("wxreqeustsite")
wxsite, err := web.AppConfig.String("wxreqeustsite")

7.出现graceful错误

这个错误无法查找定位,非常头痛,如下

有人说是引用包导致的……我的却是routers/commentsRouter____3xxx_engineercms_controllers.go这个文件没有更新导致,删除重新生成即可。

./engineercms.exe flag redefined: graceful
panic: ./engineercms.exe flag redefined: graceful

goroutine 1 [running]:
flag.(*FlagSet).Var(0xc00006c060, 0x35fded0, 0x43d79af, 0x31d7a81, 0x8, 0x3225e6a, 0x21)
        D:/Go/src/flag/flag.go:871 +0x48b
flag.BoolVar(...)
        D:/Go/src/flag/flag.go:636
github.com/astaxie/beego/grace.init.0()
        D:/gowork/pkg/mod/github.com/astaxie/beego@v1.12.3/grace/grace.go:93 +0x85

 类似资料: