development

PostgreSQL-데이터베이스 이름 변경

big-blog 2020. 7. 27. 07:17
반응형

PostgreSQL-데이터베이스 이름 변경


데이터베이스의 이름을 바꿔야하지만 데이터베이스를 만들 때 할 PGAdmin : ALTER DATABASE "databaseName" RENAME TO "databaseNameOld"수 없다고 알려줍니다.

내가 어떻게 해?

( WindowsXP 버전 8.3 )

최신 정보

  • 첫 번째 오류 메시지 : 연결할 수 없기 때문입니다. 그래서 다른 데이터베이스를 선택하고 쿼리를 수행했습니다.

  • 사용자가 연결되었음을 알려주는 두 번째 오류 메시지가 표시됩니다. 나는에서 볼 PGAdmin이 많이 가지고 화면 PID그러나 그들은 비활성 ... 나는 그들을 죽일 표시되지 않습니다.


데이터베이스 이름을 인용하지 마십시오.

ALTER DATABASE people RENAME TO customers;

또한 해당 시점에 데이터베이스에 연결된 다른 클라이언트가 없는지 확인하십시오. 마지막으로 반환되는 오류 메시지를 게시하여 좀 더 자세한 정보를 얻을 수 있습니다.


나중에 참조 할 수 있도록 다음을 수행 할 수 있어야합니다.

-- disconnect from the database to be renamed
\c postgres

-- force disconnect all other clients from the database to be renamed
SELECT pg_terminate_backend( pid )
FROM pg_stat_activity
WHERE pid <> pg_backend_pid( )
    AND datname = 'name of database';

-- rename the database (it should now have zero clients)
ALTER DATABASE "name of database" RENAME TO "new name of database";

테이블 pg_stat_activitypidprocpid9.2 이전 버전에서 와 같이 이름이 지정되었습니다 . 따라서 PostgreSQL 버전이 9.2보다 낮 으면 procpid대신을 사용하십시오 pid.


방금 이것에 부딪 쳤고 아래는 효과가 있습니다.

1) pdAdmin세션 중 하나입니다. psql대신 사용하십시오 .
2) pgBouncer세션을 작성하기 때문에 Windows에서 스케줄러 서비스를 중지하십시오.


존재하지 않는다는 의견으로 데이터베이스를 다시 시작하라는 메시지가 표시되었습니다. 데이터베이스를 다시 시작하면 기존 연결이 모두 종료 된 다음 다른 데이터베이스에 연결하여 초기 쿼리로 이름을 바꿀 수있었습니다.

모두들.


핵무기를 배치하는 대신 (서버를 다시 시작하는 것) 클라이언트 프로세스의 위치를 ​​찾고 클라이언트 프로세스를 종료하거나 pg_cancel_backend()기능 을 사용하여 귀찮은 연결을 닫아야 합니다.

참고 URL : https://stackoverflow.com/questions/143756/postgresql-rename-database

반응형