Я создал конвейер, используя Azure DevOps для базы данных Azure PostgreSQL.
Что на самом деле делает конвейер?
- Подключение к PostgreSQL;
- Удаление базы данных db_test из PostgreSQL с помощью Azure CLI;
az postgres db delete -g my_group -s database_here -n db_test --yes
Однако я не могу сделать это из-за ошибки:
An unexpected error occured while processing the request.
Затем я пыталсяудалить базу данных с помощью psql, но безуспешно из-за существующих подключений к базе данных.
С моей точки зрения - Azure CLI должен обработать такие проблемы и удалить базу данных или передать мне правильное сообщение об ошибке. Например, было бы здорово, если бы параметр --force был реализован.
Я удалил все соединения с базой данных, используя следующий синтаксис в скрипте bash:
psql "host=database_here port=5432 dbname=postgres user=postgres@database_here password=ReallyStrongPassword sslmode=require" -c "REVOKE CONNECT ON DATABASE db_test FROM PUBLIC; SELECT pg_terminate_backend(pg_stat_activity.pid) FROM pg_stat_activity WHERE pg_stat_activity.datname = 'db_test';"
и добавил базу данных DROPдействие в дополнение к моему конвейеру:
psql "host=database_here port=5432 dbname=postgres user=postgres@database_here password=ReallyStrongPassword sslmode=require" -c "DROP database db_test;"
Но я не удалил шаг удаления базы данных CLI AZ из конвейера, и он завершился неудачно со следующим выводом:
Operation failed with status: 200. Details: Resource state Failed
Я думаю об этомшаг, AZ CLI должен вернуть что-то вроде: «База данных не существует». просто информационное сообщение.
Как правильно обрабатывать такие ситуации на стороне Azure?