gpt4 book ai didi

sql-server - Golang mssql 驱动程序返回 "mssql: Invalid object name"

转载 作者:IT王子 更新时间:2023-10-29 01:39:30 30 4
gpt4 key购买 nike

在一个应用程序中,我有一个全局作用域

var db *sql.DB

稍后调用

slcstrSource, slcint64Timestamp, slcstrContent, err := DB_functions.GetContent(db)
if err != nil {
fmt.Println("Error: " + err.Error())
}

GetContent 是这样的:

func GetContent(db *sql.DB) ([]string, []int64, []string, error) {

var slcstrContent []string
var slcint64Timestamp []int64
var slcstrSource []string

// Run the query
rows, err := db.Query("SELECT source, timestamp, content FROM MyDatabase.MyTable")
if err != nil {
return slcstrSource, slcint64Timestamp, slcstrContent, err
}
defer rows.Close()

for rows.Next() {

// Holding variables for the content in the columns
var source, content string
var timestamp int64

// Get the results of the query
err := rows.Scan(&source, &timestamp, &content)
if err != nil {
return slcstrSource, slcint64Timestamp, slcstrContent, err
}

// Append them into the slices that will eventually be returned to the caller
slcstrSource = append(slcstrSource, source)
slcstrContent = append(slcstrContent, content)
slcint64Timestamp = append(slcint64Timestamp, timestamp)
}

return slcstrSource, slcint64Timestamp, slcstrContent, nil
}

当我运行应用程序并命中这些代码部分时,我得到:

Error: mssql: Invalid object name 'MyDatabase.MyTable'.

当我 db.Ping() 数据库时,它似乎可以工作。从我缩小的范围来看,错误就发生在查询中,但我找不到问题所在。我检查了数据库,有一个名为 MyDatabase 的数据库和一个名为 MyTable 的表,该表在这三列中包含信息...

在进行查询之前或进行查询时,我是否遗漏了什么?

最佳答案

I checked the database and there is a database called MyDatabase with a table called MyTable and the table has information in those three columns...

看起来驱动程序正在正常工作。为了查询 SQL Server 中的表,您应该使用 [Database].[Schema].[TableName]。如果您没有为您的表定义特定的模式名称,那么默认情况下它将在 dbo 模式下创建。也就是说,您实际上并不需要在查询中指定数据库名称。您宁愿在连接字符串上定义它。我不确定您是如何定义连接详细信息的,但请查看以下内容并根据您的需要进行相应调整。

var (
debug = flag.Bool("debug", false, "enable debugging")
password = flag.String("password", "mypwd", "the database password")
port *int = flag.Int("port", 1433, "the database port")
server = flag.String("server", "MyServer", "the database server")
user = flag.String("user", "MyUser", "the database user")
connStr = fmt.Sprintf("server=%s;Initial Catalog=MySchema;userid=%s;password=%s;port=%d", *server, *user, *password, *port)
)

func main() {
db, err := sql.Open("mssql", connStr)
}

然后你可以像这样查询你的表:

rows, err := db.Query("SELECT source, timestamp, content FROM MySchema.MyTable")

关于sql-server - Golang mssql 驱动程序返回 "mssql: Invalid object name",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32125030/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com