【发布时间】:2012-09-25 17:00:36
【问题描述】:
我想将mysqldump的输出赋值给一个变量,以后再使用生成的输出。
尝试 1:
> 1.9.3-p125 :020 > x = `mysqldump falala` mysqldump: Got error: 1045: Access denied for user 'root'@'localhost' (using password: NO) when
> trying to connect
=> ""
> 1.9.3-p125 :021 > x
=> ""
不。 X返回空,甚至无法检查是否有错误
尝试 2:
> 1.9.3-p125 :022 > x = system("mysqldump falala") mysqldump: Got error: 1045: Access denied for user 'root'@'localhost' (using password: NO)
> when trying to connect
=> false
1.9.3-p125 :023 > x
=> false
更好。这样,如果命令成功,x 就会得到信息,但仍然没有控制台输出。
我还是 Ruby 的新手,但我认为 Ruby 会继续运行而无需等待 mysqldump 执行它的操作,但我确实需要该输出(因为如果发生错误,脚本会发送错误/控制台输出)
我需要运行的完整命令是这样的mysqldump --host=#{host} --user=#{user} --password=#{pass} #{name} | gzip -9 > #{name}.sql.gz
【问题讨论】:
-
您还需要这方面的帮助吗?
-
是的,仍然需要帮助。我当前的解决方案是,我创建了一个循环,检查 10 次(每 6 秒)是否出现 MySQL Dump 文件(我现在不希望拉下更大的数据库),如果文件没有出现,我抛出一个错误,否则我认为一切正常。但我不认为这是一个真正的解决方案。我不确定“open3”方法如何与更高级的终端命令一起使用(我的意思是一个语句中有多个命令 -
echo 'aa' | echo 'bb') -
你看过Open3库的流水线方法吗?它构建了您所描述的管道。
标签: mysql ruby console terminal mysqldump