Я борюсь с базой данных postgis.
У меня есть резервная копия из схемы publi c. Я создал новую базу данных с расширением postgis. Теперь я могу восстановить данные в моей базе данных postgis, и это прекрасно работает. Я могу переименовать эту схему publi c в новую схему. Это тоже хорошо работает с:
ALTER SCHEMA public RENAME TO new_schema
Но теперь мне нужно сделать это в существующей базе данных. Таким образом, моя схема publi c содержит данные, которые могут быть скомпрометированы. Я попробовал базу данных fre sh, чтобы добиться цели с помощью ALTER SCHEMA. Итак, я импортировал его в пустую схему publi c, изменил его и экспортировал new_schema. Кажется, это работает, однако геометрия выдает ошибку, и данные не восстанавливаются.
Исходная геометрия: geom public.geomtery
Изменяя схему, она изменяется на: geom new_schema.geomtery
При импорте я получил это сообщение об ошибке:
pg_restore: error: could not execute query: ERROR: type "new_schema.geometry" does not exist
Я новичок в postgis и pgAdmin. Я могу изменить его вручную обратно на geom public.geometry
. Но это кажется странным, и я думаю, что странно смешивать одну схему с другой?
Я нашел эту информацию ( Установка Postgis: тип "geometry" не существует ):
CREATE SCHEMA IF NOT EXISTS new_schema;
UPDATE pg_extension
SET extrelocatable = TRUE
WHERE extname = 'postgis';
ALTER EXTENSION postgis
SET SCHEMA new_schema;
SET search_path TO new_schema;
Это также можно сделать в pgAdmin: RightMouse on Extensions (), выберите Definition и измените схему. Но тогда данные postgis только для new_schema?
Надеюсь, кто-нибудь может мне помочь; Я думаю, что упускаю что-то важное и не хочу испортить живую базу данных.
Будьте в безопасности и заранее спасибо.