我使用GitLab CI Runner,它使用命令:
docker run -d --name postgres postgres:9.4
Run Code Online (Sandbox Code Playgroud)
我想做这样的事情:
docker run -d --name postgres --volumes-from postgres_datastore postgres:9.4
Run Code Online (Sandbox Code Playgroud)
但GitLab CI Runner不支持任何选项(-v or --volumes-from)
.
还有其他方法吗?
package main
import (
"database/sql"
"fmt"
_ "github.com/lib/pq"
"sync"
)
func main() {
db, _ := sql.Open("postgres", fmt.Sprintf("host=%s dbname=%s user=%s sslmode=disable", "localhost", "dbname", "postgres"))
defer db.Close()
db.SetMaxOpenConns(15)
var wg sync.WaitGroup
for i := 0; i < 15; i++ {
wg.Add(1)
go func() {
defer wg.Done()
//#1
rows, _ := db.Query("SELECT * FROM reviews LIMIT 1")
for rows.Next() {
//#2
db.Exec("SELECT * FROM reviews LIMIT 1")
}
}()
}
wg.Wait()
}
Run Code Online (Sandbox Code Playgroud)
查询1打开15个连接,rows.Next()
执行时将关闭它们。但是rows.Next()
永远不会执行,因为它包含db.Exec()
等待自由连接的内容。
如何解决这个问题呢?