我一直在尝试pg_restore使用数据库转储文件中的数据 来调用exec.Command和提供数据,它适用于 1Mb 以下的小文件,但对于较大的转储,它会因错误而失败。我还尝试逐行扫描并写入管道,但它导致了相同的错误,并且像在单独的 goroutine 中一样运行也无济于事。StdinPipewrite |1: broken pipecmd.Run()
去:1.14 操作系统:macOS
cmd := exec.Command("pg_restore", "--clean", "-n public", "--dbname=DB_URI")
cmd.Stdout = os.Stdout
cmd.Stderr = os.Stderr
pw, err := cmd.StdinPipe()
defer pw.Close()
...
done := make(chan struct{})
errCh := make(chan error)
file, err := os.Open("dumpfile")
defer file.Close()
if err := cmd.Start(); err != nil {
return err
}
_, err = io.Copy(pw, file)
我做错了什么或如何保持管道畅通?
交互式爱情
RISEBY
一只甜甜圈
相关分类