相关疑难解决方法(0)

pq:抱歉,已经有太多客户了

多次pq: sorry, too many clients already调用时出现错误GetMessages()

请找到更新的代码:

main() 代码

func main() {
  dbConn, err := InitDB()
  if err != nil {
    Log.Error("Connection Error: ", err.Error())
    return
  }
  defer dbConn.Close()
  go run()
  var input string
  fmt.Scanln(&input)
}
Run Code Online (Sandbox Code Playgroud)

数据库连接代码为:

func InitDB()(*sql.DB, error) {
  connectionString := fmt.Sprintf("user=%v password='%v' dbname=%v sslmode=disable", USER, PASSWORD, DATABASE)
  db, err = sql.Open(DRIVER, connectionString)
  return db, err
}
Run Code Online (Sandbox Code Playgroud)

run 协程:

func run() {
  for {
    messages, err := GetMessages()
    if err != nil {
      Log.Error("Connection …
Run Code Online (Sandbox Code Playgroud)

postgresql go

11
推荐指数
1
解决办法
9272
查看次数

如何处理Go应用中的Db连接打开/关闭?

我的Web API应用程序中有一组功能。他们对Postgres数据库中的数据执行一些操作。

func CreateUser () {
    db, err := sql.Open("postgres", "user=postgres password=password dbname=api_dev sslmode=disable")
    // Do some db operations here
}
Run Code Online (Sandbox Code Playgroud)

我想函数应该彼此独立地与db一起工作,所以现在我sql.Open(...)在每个函数中都有了。我不知道这是管理数据库连接的正确方法。

应用启动后,是否应该在某个地方打开它,并将db作为参数传递给相应的函数,而不是在每个函数中都打开连接?

postgresql go

4
推荐指数
1
解决办法
936
查看次数

引用函数内部的开放数据库连接 - Golang

我的main函数打开一个数据库连接:

func main() {
    db, err := sql.Open("sqlite3", "./house.db")
    checkErr(err)

    ...
}
Run Code Online (Sandbox Code Playgroud)

然后,我想创建一个函数,允许我根据传递的结构向数据库添加一行:

func addRow(row Room) error {
    stmt, err := db.Prepare("INSERT INTO Rooms (Name, Size, WindowCount, WallDecorationType, Floor) VALUES(?, ?, ?, ?, ?)")
    _, err = stmt.Exec(row.Name , row.Size , row.WindowCount , row.WallDecorationType , row.Floor)
    return err
}
Run Code Online (Sandbox Code Playgroud)

但显然我不能这样做,因为addRow()函数不知道是什么db.

我该如何使这个功能起作用?我是否应该在主要功能之外打开数据库?

sql database go

4
推荐指数
1
解决办法
3932
查看次数

标签 统计

go ×3

postgresql ×2

database ×1

sql ×1