mirror of
https://github.com/opf/openproject.git
synced 2026-06-14 03:30:14 +00:00
Migrate schema from db to public in mysql migration script
[ci skip]
This commit is contained in:
Regular → Executable
+27
-2
@@ -36,7 +36,7 @@ POSTGRES_PORT=5439
|
||||
MYSQL_PORT=3305 # has to be free on localhost
|
||||
MYSQL_USER=root
|
||||
export MYSQL_PWD=root # export to be used by mysql client
|
||||
DATABASE=fitopenproject
|
||||
DATABASE=openproject
|
||||
|
||||
SKIP_STEP_1=false
|
||||
MIGRATION_TIMEOUT_S=600 # wait at most 10 minutes for the migration from 8 to 10 to finish
|
||||
@@ -197,7 +197,32 @@ else
|
||||
fi
|
||||
|
||||
echo
|
||||
echo "2.3) Dumping migrated database to $DATABASE-migrated.sql"
|
||||
echo "2.3) Renaming PostgreSQL schema from $DATABASE to public"
|
||||
|
||||
MOVE_SCHEMA_FN='' read -r -d '' String <<"EOF"
|
||||
CREATE OR REPLACE FUNCTION move_schema_to_public(old_schema varchar) RETURNS void LANGUAGE plpgsql VOLATILE AS
|
||||
$$
|
||||
DECLARE
|
||||
row record;
|
||||
BEGIN
|
||||
FOR row IN SELECT tablename FROM pg_tables WHERE schemaname = quote_ident(old_schema)
|
||||
LOOP
|
||||
EXECUTE 'ALTER TABLE ' || quote_ident(old_schema) || '.' || quote_ident(row.tablename) || ' SET SCHEMA public;';
|
||||
END LOOP;
|
||||
END;
|
||||
$$;
|
||||
EOF
|
||||
|
||||
|
||||
docker exec -e PGPASSWORD=postgres -it migrate8to10 psql \
|
||||
-h $DOCKER_HOST_IP \
|
||||
-p $POSTGRES_PORT \
|
||||
-U postgres \
|
||||
-d $DATABASE \
|
||||
-c "${MOVE_SCHEMA_FN}; SELECT * FROM move_schema_to_public('$DATABASE');"
|
||||
|
||||
echo
|
||||
echo "2.4) Dumping migrated database to $DATABASE-migrated.sql"
|
||||
|
||||
# using the running docker image to dump the database to ensure we use the same
|
||||
# postgres client version and also so that a postgres client is not necessary to run this script
|
||||
|
||||
Reference in New Issue
Block a user