[sql] 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) pgAdmin
세션 중 하나입니다. psql
대신 사용하십시오 .
2) pgBouncer
Windows 에서 및 / 또는 스케줄러 서비스도 세션을 생성하므로 중지 합니다.
답변
Unexist는 데이터베이스를 다시 시작하라는 의견을 말했으며 작동합니다! 데이터베이스를 다시 시작하면 기존 연결이 모두 종료되고 다른 데이터베이스에 연결하여 초기 쿼리로 이름을 바꿀 수 있습니다.
모두들.
답변
핵을 배포하는 대신 (서버를 다시 시작하는) 연결 위치를 찾고 클라이언트 프로세스를 종료하거나 pg_cancel_backend()
기능 을 사용하여 방해가되는 연결을 닫아야 합니다.
답변
DBeaver를 사용하여이 문제를 겪고 다음과 같은 오류 메시지를받는 사람 :
ERROR: database "my_stubborn_db" is being accessed by other users
Detail: There is 1 other session using the database.
현재 연결을 끊고 이름을 바꾸려는 데이터베이스를 대상으로하지 않는 연결을 사용하여 동일한 서버에 다시 연결합니다.
활성 데이터베이스를 변경하는 것만으로는 충분하지 않습니다.