programing

셰프 ruby_block ShellOut mysql 결과 stdout 영원히 비어 있습니다.

easyjava 2023. 10. 1. 23:07
반응형

셰프 ruby_block ShellOut mysql 결과 stdout 영원히 비어 있습니다.

다음 사례가 있습니다.

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으로 결과를 반환할 것으로 예상하기

아마도 stdout이 아닌 mysql이 결과를 반환할 수 있을 것입니다. 그러면 어디서 어떻게 결과를 얻을 수 있을까요?

추신: 저는 이 작업에 사용할 수 있는 루비 gem mysql2에 대해 알고 있지만 솔직히 간단한 SQL 결과만 얻기 위해 이런 것을 구현할 시간이 없습니다. 또한 --silent 및 --skip-column-names 플래그가 없는 run 명령을 시도했지만 이 또한 도움이 되지 않습니다.

그래서 문제는, 내 명령이 코드 1번 출구를 반환하고 있었는데, 실패한 것 같아서, 명령을 수정한 후에 문제는 이중 쉼표 대신 단일 쉼표를 사용하는 것이었습니다.

언급URL : https://stackoverflow.com/questions/51721449/chef-ruby-block-shellout-mysql-result-stdout-forever-empty

반응형