version 1.3.2
go version 1.3
init方法中注册default
但是还是显示错误
must have one register DataBase alias named default
遇到同样的问题
[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)
}
====================================
default 大多数同学是把之前的老项目直接拿过来用,然后改掉数据库,但是有些路径引用没有改掉
Most helpful comment
@astaxie 的确是init函数执行顺序的问题,被导入包的init函数先执行,但是数据库链接放在了main中,所以就出现了这样的情况。
不过我的问题是创建数据表RegisterModel()的确应该放在模型定义的包里面,但是这种init函数执行顺序所带来的‘不方便‘,是否有一种优雅的方式处理。