PostgreSQL - Rename database

后端 未结 6 832
感情败类
感情败类 2020-12-23 02:27

I need to rename the database but when I do in PGAdmin : ALTER DATABASE \"databaseName\" RENAME TO \"databaseNameOld\" it told me that it cannot.

How c

相关标签:
6条回答
  • 2020-12-23 03:02

    Unexist told me in comment to restart the database and it works! Restarting the database kill all existing connection and then I connect to an other database and was able to rename it with my initial query.

    Thx all.

    0 讨论(0)
  • 2020-12-23 03:07

    I just ran into this and below is what worked:

    1) pgAdmin is one of the sessions. Use psql instead.
    2) Stop the pgBouncer and/or scheduler services on Windows as these also create sessions

    0 讨论(0)
  • 2020-12-23 03:15

    For future reference, you should be able to:

    -- 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";
    

    Note that table pg_stat_activity column pid was named as procpid in versions prior to 9.2. So if your PostgreSQL version is lower than 9.2, use procpid instead of pid.

    0 讨论(0)
  • 2020-12-23 03:17

    Try not quoting the database name:

    ALTER DATABASE people RENAME TO customers;
    

    Also ensure that there are no other clients connected to the database at the time. Lastly, try posting the error message it returns so we can get a bit more information.

    0 讨论(0)
  • 2020-12-23 03:24

    Instead of deploying a nuke (restarting the server) you should try to close those connections that bother you either by finding where are they from and shutting down the client processes or by using the pg_cancel_backend() function.

    0 讨论(0)
  • 2020-12-23 03:27

    For anyone running into this issue using DBeaver and getting an error message like this:

    ERROR: database "my_stubborn_db" is being accessed by other users
      Detail: There is 1 other session using the database.
    

    Disconnect your current connection, and reconnect to the same server with a connection that doesn't target the database you are renaming.

    Changing the active database is not enough.

    0 讨论(0)
提交回复
热议问题