Я пытаюсь создать простую задачу Gradle для выполнения SQL-запроса.
Команда, которую я пытаюсь выполнить:
UPDATE user_account SET user_password = 'xyz'
Полная командная строка выглядит следующим образом:
"c:\Program Files\MariaDB 10.3\bin\mysql.exe" --user=dbUser --password=dbPass-D dbName -e "UPDATE user_account SET user_password = 'xyz'"
Эта команда отлично работает из командной строки. Однако это не работает из задачи Gradle Exec:
task updatePasswords(type:Exec) {
def sql = "UPDATE user_account SET user_password = 'xyz'"
def myCmd = '"' + dbSqlExe + '" --user=' + dbUser + ' --password=' + dbPass + ' -D ' + dbDb + ' -e "' + sql + '"'
println 'Update cmd: ' + myCmd
commandLine 'cmd', '/c', myCmd
ignoreExitValue = true
}
Где
def dbSqlExe = "c:\\Program Files\\MariaDB 10.3\\bin\\mysql.exe"
Эта задача сообщает об ошибке:
'c:\Program' is not recognized as an internal or external command, operable program or batch file.
Если я удаляю двойные кавычки вокруг запроса sql, то mysql.exe будет найден, но команда больше не действительна, поскольку mysql требует двойных кавычек вокруг запроса SQL.
Я пробовал решение в этой теме: gradle: Выполнить задачу "type: Exec" с множеством аргументов с пробелами без успеха.
Любой совет, как мне отформатировать мою задачу?