执行 psql 命令时 os/exec 上的输出不完整

我目前正在使用顺序os/exec运行许多命令。psql


我的问题是,如果在脚本执行期间出现错误,输出不会显示它。


示例:从命令行执行命令文件时,输出如下:


SET

CREATE FUNCTION

psql:update-14.3.7.1/dml/----------------xxxxxxxx.sql:33: ERROR:  null value in column "tipoxxxxxxxx" violates not-null constraint

DETALHE:  Failing row contains (9, 0, null, null, null, null, AAAAAAAAA_BBBBBBBBBB_CCCCC_BANANA, null, null, null).

CONTEXTO:  SQL statement "insert INTO ----------------xxxxxxxx

        (id,versao,tipoxxxxxxxx,carrotdeapplefinal,carrotdetttttttt,ativa,funcionalidade,driver,alterar_na_xxxxxxxx)

        values

        (nextval('sq_----------------xxxxxxxx'),0,tipoaaaaaaaaa,carrotapple,carrottttttttt,alterarNaxxxxxxxx)"

PL/pgSQL function createorupdateaaaaaaaaa() line 22 at SQL statement

DROP FUNCTION

并从 Go 代码中执行完全相同的文件,输出为:


SET

CREATE FUNCTION

DROP FUNCTION

我用于运行命令(并显示输出)的 Go 代码是:


    cmd := exec.Command(comando, argList...)

    var out bytes.Buffer

    var stderr bytes.Buffer

    cmd.Stdout = &out

    cmd.Stderr = &stderr

    err := cmd.Run()

    cmdS := out.String()

    fmt.Println("cmdS", cmdS)

    if err != nil {

        fmt.Println("XYZ")

        fmt.Println(fmt.Sprint(err) + ": " + stderr.String())

    }

如何修改我的代码以显示输出的其他行?


温温酱
浏览 131回答 1
1回答

拉风的咖菲猫

程序可以使用stderr,stdout但是他们选择。执行错误的存在与是否写入内容无关stderr。在查找程序的所有输出时,始终检查两个流。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go