Ubuntu 14.04 でGrails 2.4.5 org.codehaus.groovy.runtime.ProcessGroovyMethodsを使用している場合:
def command = "mysqldump -h${databaseProperties.host} -u'${databaseProperties.username}' -p'${databaseProperties.password}' ${databaseProperties.name} " + table
print command
def proc = command.execute()
def oneMinute = 60000
proc.waitForOrKill(oneMinute)
if(proc.exitValue()!=0){
println "[[return code: ${proc.exitValue()}]]"
println "[[stderr: ${proc.err.text}]]"
return null
}else{
return proc.in.text.readLines()
}
私が持っている
[[return code: 2]]
[[stderr: mysqldump: Got error: 1045: Access denied for user 'root'@'localhost' (using password: YES) when trying to connect]]
しかし、printlinedコマンドをコピーして bash に貼り付けると、適切なダンプが表示されます。何が起こっている?
私も試しました:
mysqldumpをフルパスに変更: /usr/bin/mysqldump
引数を文字列配列として送信しますが、結果は同じです。
実行する通常の文字列としてコマンドを送信します。
"mysqldump -hlocalhost -u'root' -p'password' database table"
システムbashで機能しますが、ProcessGroovyMethodとしては機能しません...