From 57f40539f221bcfb08fdc84d6de1a7728ebfc2a9 Mon Sep 17 00:00:00 2001 From: Marcel Herrguth Date: Fri, 24 Apr 2020 09:47:25 +0200 Subject: [PATCH] Restoring Zammad from backup: Workaround for missing `DROP TABLE IF EXISTS` statement in DB dumps created with an older `pgdump` version. --- contrib/backup/functions | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/contrib/backup/functions b/contrib/backup/functions index 5a57b27be..1a58a0d23 100644 --- a/contrib/backup/functions +++ b/contrib/backup/functions @@ -159,6 +159,26 @@ function restore_zammad () { chown -R zammad:zammad ${ZAMMAD_DIR} if [ "${DB_ADAPTER}" == "postgresql" ]; then + echo "# ... Dropping current database ${DB_NAME}" + + # This step is only needed for some pgsql dumps, as they don't provide a drop table statement which will cause + # relation errors during restoration (as on package installation there's always an initialised database) + if command -v zammad > /dev/null; then + zammad config:set DISABLE_DATABASE_ENVIRONMENT_CHECK=1 + zammad run rake db:drop + zammad config:set DISABLE_DATABASE_ENVIRONMENT_CHECK=0 + else + ${ZAMMAD_DIR}/bin/rake db:drop + fi + + echo "# ... Creating database ${DB_NAME} for owner ${DB_USER}" + if command -v zammad > /dev/null; then + # We'll skip this part for docker installations + su -c "psql -c \"CREATE DATABASE ${DB_NAME} OWNER ${DB_USER};\"" postgres + else + ${ZAMMAD_DIR}/bin/rake db:create + fi + echo "# Restoring PostgrSQL DB" zcat ${BACKUP_DIR}/${RESTORE_DB_DATE}_zammad_db.${DB_FILE_EXT}.gz | su -c "psql -d ${DB_NAME}" postgres elif [ "${DB_ADAPTER}" == "mysql2" ]; then