gpt4 book ai didi

database - PostgreSQL:为什么 DROP DATABASE databaseName 在 psql 中保留已删除数据库的模式和关系?

转载 作者:搜寻专家 更新时间:2023-10-30 22:31:00 25 4
gpt4 key购买 nike

在 Postgres 中,PSQL 可以使用 \i <path> 从文件执行命令命令。

我通过使用这个小文件创建一个数据库、一个架构、一些表和一个 View 来做到这一点:

DROP DATABASE IF EXISTS databaseName;
CREATE DATABASE databaseName ;

CREATE SCHEMA IF NOT EXISTS databaseName_schema;

CREATE TABLE IF NOT EXISTS databaseName_schema.tableName (
id SERIAL PRIMARY KEY,
name VARCHAR(80),
surename VARCHAR(80),
);


CREATE TABLE IF NOT EXISTS databaseName_schema.tableMovies (
id SERIAL PRIMARY KEY,
priority SERIAL,
movieName VARCHAR(40)
);

create or replace view versionViewTest as select version();

然后我检查了\l 并且数据库“databaseName”确实存在。如果我那么

DROP DATABASE databaseName;

并重新检查\l 数据库不见了!但是,当我再次使用

执行相同的脚本时
\i <path>

它说:

...模式已经存在,跳过 CREATE SCHEMA...关系已经存在,跳过 CREATE TABLE

我已经花了一些时间阅读有关模式、关系和 Postgres 的内容,但不知道我错过了什么。

我的期望是:如果我删除一个数据库,它包含的组件也会被删除,但不知何故 psql 不会删除它们,而是在将来创建具有完全相同名称的数据库时重用它们。为什么那会有用?我将如何删除包含所有内容的数据库?

PS:欢迎任何关于该主题的讲座以及直接回答。

最佳答案

您忘记连接到数据库:

DROP DATABASE IF EXISTS databaseName;
CREATE DATABASE databaseName ;
\c databaseName
CREATE SCHEMA IF NOT EXISTS databaseName_schema;
...

关于database - PostgreSQL:为什么 DROP DATABASE databaseName 在 psql 中保留已删除数据库的模式和关系?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43365433/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com