-2
当我尝试建立我的项目,它说:Golang建立自己的错误:无法分配* sqlx.DB为* sql.DB
./main.go:140: cannot assign *sqlx.DB to db.Conn (type *sql.DB) in multiple assignment
我进口main.go:
import (
"html/template"
"io/ioutil"
"net/http"
"regexp"
"./network"
"log"
"./config"
"./db"
"fmt"
"github.com/jmoiron/sqlx"
)
我db.go是:
package db
import "database/sql"
import _ "github.com/go-sql-driver/mysql"
var Conn *sql.DB
var Err error
而且从main.go第140行:
db.Conn, db.Err = sqlx.Open(config.Db.Type, config.Db.User+":"+config.Db.Pass+"@/"+config.Db.Name)
感谢您的帮助。
是的,'sql.DB'和'sqlx.DB'是不同的类型。另一方面,不要使用相对路径导入。它们在大多数情况下不起作用,只能在GOPATH之外进行快速测试。始终使用完整的导入路径。 – JimB
谢谢。这太容易了:D 但为什么我不应该使用相对路径?现在工作正常。 –
相对路径可能正常工作,因为您只使用package目录中的'go build'或'go install'。这在打包工具需要按名称引用包时会中断。它也打破了你需要在包之间共享类型的原因,因为类型是通过它们的导入路径进行规范化的,所以从'./config'输入'T'与'../ config'类型'T'的类型不同。 – JimB