Beego: must have one register DataBase alias named `default`

Created on 7 Jul 2014  ·  9Comments  ·  Source: astaxie/beego

version 1.3.2
go version 1.3
init方法中注册default
但是还是显示错误
must have one register DataBase alias named default

Most helpful comment

@astaxie 的确是init函数执行顺序的问题,被导入包的init函数先执行,但是数据库链接放在了main中,所以就出现了这样的情况。

不过我的问题是创建数据表RegisterModel()的确应该放在模型定义的包里面,但是这种init函数执行顺序所带来的‘不方便‘,是否有一种优雅的方式处理。

All 9 comments

遇到同样的问题
[ORM]register db Ping default, dial tcp 127.0.0.1:3306: connection refused
must have one register DataBase alias named default
exit status 2

楼上,你的错误应该是数据库连接错误,链接不上的错误,因为在beego ORM里面会在链接之后,尝试执行Ping,测试连接是否可用

[ORM]2017/05/07 21:32:02 register db Ping default, Error 1049: Unknown database 'beeblog'
must have one register DataBase alias named default
我也是这个错误,不知道如何解决数据库别名的问题

@minnao 应该是你们init的顺序问题

密码中有!好像就不行,换了个密码就好了。

@astaxie 的确是init函数执行顺序的问题,被导入包的init函数先执行,但是数据库链接放在了main中,所以就出现了这样的情况。

不过我的问题是创建数据表RegisterModel()的确应该放在模型定义的包里面,但是这种init函数执行顺序所带来的‘不方便‘,是否有一种优雅的方式处理。

orm.RegisterDataBase("default", "mysql", "root:DB_PWD@tcp(HOST:PORT)/DB_NAME")

model/
db1.go ----------------------------

func init() {   
        orm.RegisterModel(new(STDevice))
    orm.RegisterDataBase("db1", "sqlite3", "base1.db")
         orm.RunSyncdb("db1", false, true)
}
db2.go --------------------------------
func init() {   
orm.RegisterModel(new(STDevice2))
    orm.RegisterDataBase("db2", "sqlite3", "base2.db")
orm.RunSyncdb("db1", false, true)
}
====================================

目的

  • 想创建base1.db 和base2.db ,但是出现下面的告警
  • must have one register DataBase alias named default

大多数同学是把之前的老项目直接拿过来用,然后改掉数据库,但是有些路径引用没有改掉

Was this page helpful?
0 / 5 - 0 ratings