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_activity
열 pid
은 procpid
9.2 이전 버전에서 와 같이 이름이 지정되었습니다 . 따라서 PostgreSQL 버전이 9.2보다 낮 으면 procpid
대신을 사용하십시오 pid
.
방금 이것에 부딪 쳤고 아래는 효과가 있습니다.
1) pdAdmin
세션 중 하나입니다. psql
대신 사용하십시오 .
2) pgBouncer
세션을 작성하기 때문에 Windows에서 스케줄러 서비스를 중지하십시오.
존재하지 않는다는 의견으로 데이터베이스를 다시 시작하라는 메시지가 표시되었습니다. 데이터베이스를 다시 시작하면 기존 연결이 모두 종료 된 다음 다른 데이터베이스에 연결하여 초기 쿼리로 이름을 바꿀 수있었습니다.
모두들.
핵무기를 배치하는 대신 (서버를 다시 시작하는 것) 클라이언트 프로세스의 위치를 찾고 클라이언트 프로세스를 종료하거나 pg_cancel_backend()
기능 을 사용하여 귀찮은 연결을 닫아야 합니다.
참고 URL : https://stackoverflow.com/questions/143756/postgresql-rename-database
'development' 카테고리의 다른 글
Sqlite : CURRENT_TIMESTAMP는 시스템 시간대가 아닌 GMT입니다. (0) | 2020.07.27 |
---|---|
ng-repeat로 함수가 반환 한 항목을 반복하는 방법은 무엇입니까? (0) | 2020.07.27 |
ng-click 이벤트를 조건부로 만드는 방법은 무엇입니까? (0) | 2020.07.27 |
페이지를 새로 고친 후 JS 변수가 값을 유지하는 방법은 무엇입니까? (0) | 2020.07.27 |
Windows에서 스크린 샷을 파일로 직접 저장하려면 어떻게해야합니까? (0) | 2020.07.27 |