mysql - Chef ruby​​_block ShellOut mysql 结果 stdout 永远为空

标签 mysql chef-infra mariadb ruby-block mixlib-shellout

下一个案例:

test3 = Mixlib::ShellOut.new("echo '1'")
test4 = Mixlib::ShellOut.new("mysql -u root --silent --skip-column-names --password='rootpass' -e 'some sql;'")
test3.run_command
test4.run_command

puts test3.stdout # => 1
puts test4.stdout # => empty string, nothing

期望 test4 返回结果作为 test3

我想也许 mysql 返回的结果不是标准输出,那么我在哪里以及如何得到结果

P.S 我知道 ruby​​ gem mysql2,我可以用它来做这些事情,但老实说,没有时间实现这样的事情只是为了得到一个简单的 SQL 结果,我也试过运行命令而不用 --silent 和--skip-column-names 标志,这也无济于事。

最佳答案

所以问题是,我的命令返回代码 exit 1,它似乎失败了,所以在修复它工作的命令后,问题是使用单逗号而不是双逗号

关于mysql - Chef ruby​​_block ShellOut mysql 结果 stdout 永远为空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51721449/

相关文章:

mysql - 如何在 mysql 上的一个查询(3 个表)中进行 2 个不同的连接

mariadb 无法启动 WSREP:std::bad_alloc

python - 使用查找值而不是外键 ID 在 SQLAlchemy 中创建新实例

mysql - 使用 CASE 后无法按超过 1 列对 sql 中的结果进行排序

python - 在 Chef Recipe 中执行requirements.txt文件来安装python模块的正确方法是什么?

chef-infra - Vagrant : how to get hostonly ip address from within chef recipe?

mysql - Django MySQL 'utf8' 目前是字符集UTF8MB3的别名,将被UTF8MB4取代

php - mysql_real_escape_string ALONE可以防止各种sql注入(inject)吗?

python - 如何有一个 cron 脚本在每次运行时调用 Chef-databag 来获取用户名和密码?

linux - Tiny Core linux : terminals database is inaccessible 上的 MariaDB