嘗試刪除資料庫時,您可能會遇到錯誤:
pq: cannot drop the currently open database
出現此錯誤是因為您試圖刪除目前連線的資料庫。刪除資料庫會使所有開啟的連線失效,包括您正在使用的連線。
要解決此問題,建議連接到其他資料庫並執行 DROP DATABASE從那裡發出命令。這可確保您有一個活動連線來執行命令,同時避免刪除目前資料庫的問題。
範例程式碼:
// Connect to a secondary database otherDbConn, err := sql.Open("postgres", "host=localhost port=5432 user=username dbname=otherdb") if err != nil { return err } // Execute DROP DATABASE command on other database _, err = otherDbConn.Exec(fmt.Sprintf(`DROP DATABASE %s;`, dbName)) if err != nil { return err } // Close the connection to the other database otherDbConn.Close()
如果您無法連接到另一個資料庫或不願意連接,您可以強制中斷所有客戶端與您想要刪除的資料庫的連線。這需要超級使用者權限,應謹慎使用。
對於Postgres 9.2 以下版本:
SELECT pg_terminate_backend(procpid) FROM pg_stat_activity WHERE datname = 'mydb';
對於Postgres 9.2 及以上版本:
SELECT pg_terminate_backend(pid) FROM pg_stat_activity WHERE datname = 'mydb';
強制後斷開所有客戶端的連接,您可以連接到不同的資料庫並執行DROP DATABASE 命令。
以上是為什麼我無法刪除 Postgres 中的開放資料庫?的詳細內容。更多資訊請關注PHP中文網其他相關文章!