我正在将 bref/bref 库从 1.7 更新到 2.1,我发现 CLI 工具的使用方式在版本之间发生了变化。这是我在 1.7 下的 bref 命令。它调用 symfony 命令并同时对多个数据库进行 SQL 查询:
vendor/bin/bref cli my-lambda-product-console --region us-east-1 --product:foreach -o csv "从 mytable 中选择 COUNT(id)" > mytable-us.csv
这通常会输出数据库名称和查询计数的 CSV:
START
SQL to execute: SELECT COUNT(id) FROM mytable
Running ConnectAll.
dbname1,3
dbname2,4
dbname3,1
dbname4,1
dbname5,2
All done.
END Duration: 1252.94 ms Memory Used: 185 MB
升级bref/bref后,看来新的命令应该是这样的。这可行,但输出现在在顶部包含一个大的 JSON 字符串,它似乎只是输出数据的副本。
新命令:
无服务器 bref:cli --region=us-east-1 --stage=生产 --function=console --args="生产:foreach '从 mytable 中选择 COUNT(id)'" > mytable-us.out
输出:
{
"exitCode": 0,
"output": "SQL to execute: SELECT COUNT(id) FROM mytable\nRunning
ConnectAll.\dbname1,3\dbname2,4\dbname3,1\dbname4,1\dbname5,2\nAll
done.\n"
}
START
SQL to execute: SELECT COUNT(id) FROM mytable
Running ConnectAll.
dbname1,3
dbname2,4
dbname3,1
dbname4,1
dbname5,2
All done.
END Duration: 1252.94 ms Memory Used: 185 MB
如您所见,JSON 字符串的内容与我们期望的输出相同。有谁知道是什么导致了第一个 JSON 输出块。在 bref 1.7 上不会发生这种情况。我认为无服务器可能是罪魁祸首,但我一直在努力在这两个文档中找到任何线索。
我注释掉了
中的2行vendor/bref/bref/src/ConsoleRuntime/Main.php
避免运行 bref:cli 命令时出现重复输出 更改线路:
return [
// 'exitCode' => $exitCode, // will always be 0
// 'output' => $process->getOutput(),
];
它解决了视觉问题,到目前为止没有副作用