Как запустить команды mysql в конвейере jenkins?

Мне нужно выполнить некоторые операции SQL в конвейере jenkins. В конвейере jenkins я запускаю следующую команду

sh 'mysql -uUSERNAME -pPASSWORD -hHOSTNAME -P3306'

он успешно подключен. Но после этого, когда я выполняю следующую команду, например sh «DROP DATABASE IF EXISTS dbname», она показывает

"DROP: not found Error is hudson.AbortException: script returned exit code 127"

. Как выполнять запросы mysql в конвейере jenkins, когда я успешно подключился к mysql. Я использую операционную систему Ubuntu.

Спасибо

Это потому, что он отключается, когда завершается первая "sh". Создайте один сценарий оболочки со всеми командами mysql, которые вы хотите выполнить, а затем вызовите его из «sh».

Adam vonNieda 22.05.2019 14:41

Спасибо. Хочу ли я включить sh 'mysql -uUSERNAME -pPASSWORD -hHOSTNAME -P3306' в этот файл сценария оболочки.

Prakash 22.05.2019 14:54

Да, либо создайте сценарий оболочки со всеми командами mysql, либо, если это всего лишь один лайнер, сделайте то, что предложил @hariK.

Adam vonNieda 22.05.2019 14:57

Просто подумал, что эта ссылка будет полезна: github.com/jciskey/jenkins-pipeline-mysql-database-managemen‌​t/…

deepak 25.07.2019 17:47
3 метода стилизации элементов HTML
3 метода стилизации элементов HTML
Когда дело доходит до применения какого-либо стиля к нашему HTML, существует три подхода: встроенный, внутренний и внешний. Предпочтительным обычно...
Формы c голосовым вводом в React с помощью Speechly
Формы c голосовым вводом в React с помощью Speechly
Пытались ли вы когда-нибудь заполнить веб-форму в области электронной коммерции, которая требует много кликов и выбора? Вас попросят заполнить дату,...
Стилизация и валидация html-формы без использования JavaScript (только HTML/CSS)
Стилизация и валидация html-формы без использования JavaScript (только HTML/CSS)
Будучи разработчиком веб-приложений, легко впасть в заблуждение, считая, что приложение без JavaScript не имеет права на жизнь. Нам становится удобно...
Flatpickr: простой модуль календаря для вашего приложения на React
Flatpickr: простой модуль календаря для вашего приложения на React
Если вы ищете пакет для быстрой интеграции календаря с выбором даты в ваше приложения, то библиотека Flatpickr отлично справится с этой задачей....
В чем разница между Promise и Observable?
В чем разница между Promise и Observable?
Разберитесь в этом вопросе, и вы значительно повысите уровень своей компетенции.
Что такое cURL в PHP? Встроенные функции и пример GET запроса
Что такое cURL в PHP? Встроенные функции и пример GET запроса
Клиент для URL-адресов, cURL, позволяет взаимодействовать с множеством различных серверов по множеству различных протоколов с синтаксисом URL.
0
4
6 141
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Потому что команды 1 и 2 выполняются в разных оболочках. Пытаться,

sh "mysql -uUSERNAME -pPASSWORD -hHOSTNAME -P3306 -e \'DROP <cmd>\'  <database>"

Спасибо за ваш ответ. Если я хочу выполнить несколько запросов в одном sh, можем ли мы сделать это. sh "mysql -uUSERNAME -pPASSWORD -hHOSTNAME -P3306 -e \'УДАЛИТЬ БАЗУ ДАННЫХ, ЕСЛИ СУЩЕСТВУЕТ dbname -e \' \'use dbanme -e \' "

Prakash 22.05.2019 15:06

Я не думаю, что -e будет поддерживать несколько запросов. Это для одного запроса. Если вы собираетесь выполнять несколько запросов, используйте сценарий оболочки или mysql < query.sql.

hariK 22.05.2019 16:13

Спасибо. Если я хочу написать файл сценария оболочки, как я могу загрузить в него файл sql и запустить в файле сценария оболочки?

Prakash 22.05.2019 16:17

Или как выполнить несколько запросов sql в одной строке sh?

Prakash 22.05.2019 16:21

Пример сценария оболочки

#!/bin/bash

mysql -uUSERNAME -pPASSWORD -hHOSTNAME -P3306 <<EOF
DROP DATABASE IF EXISTS dbname
...
...
EOF

Я завершил файл сценария оболочки, но Дженкинс показывает отказ в разрешении. Он показывает «./shell.sh: Отказано в доступе»

Prakash 22.05.2019 17:13

Сделайте «chmod 755» в сценарии, что даст Дженкинсу разрешение на выполнение. Убедитесь, что пользователь ОС, под которым работает Jenkins, имеет доступ к каталогу, в котором находится скрипт, и полностью определите вызов скрипта, например «/some/directory/path/shell.sh».

Adam vonNieda 22.05.2019 17:15

В моем файле сценария оболочки я написал так: \n mysql -uUSERNAME -pPASSWORD -hHOSTNAME -P3306 <<EOF DROP DATABASE IF EXISTS dbname CREATE DATABASE dbname USE dbname EOF \n Но jenkins показывает версию сервера MySQL для правильного синтаксиса для использования рядом с ' CREATE DATABASE USE» в строке 2

Prakash 22.05.2019 18:27

Сначала убедитесь, что ваш сценарий оболочки работает за пределами Jenkins, работая от имени того же пользователя, от имени которого работает Jenkins.

Adam vonNieda 22.05.2019 19:58

Другие вопросы по теме