我想删除/创建数据库,每次运行我的应用程序时运行我的测试用例。根据我的理解,postgresql在创建连接时必须知道数据库。所以当我写这个
new NpgsqlConnection("host=localhost;username=foo;password='bar';");
postgresql会自动使用数据库foo。因为我使用foo,所以我无法删除/创建它。所以我的问题是如何在每次运行应用程序时删除/创建数据库,是否可以拥有内存数据库?
答案 0 :(得分:0)
您必须多次连接才能进行此操作。如果您使用psql
,则可以使用\c
metacommand编写脚本,例如:
t=# create database foo1;
CREATE DATABASE
t=# \c foo1;
You are now connected to database "foo1" as user "vao".
foo1=# begin;
BEGIN
foo1=# select now();
now
-------------------------------
2017-04-03 21:00:34.296285+01
(1 row)
foo1=# end;
COMMIT
foo1=# \c t
You are now connected to database "t" as user "vao".
t=# drop database foo1;
DROP DATABASE
因此,您可以将所有上述命令保存到sql文件并使用psql
运行它,但在这种情况下,您必须创建new NpgsqlConnection
,创建数据库,使用新的{{1}连接到它},运行测试,连接回foo和rop db ...
答案 1 :(得分:0)
管理数据库postgres
的用途是什么。
您必须关闭与数据库foo
的所有连接,与具有postgres
权限的用户建立与CREATEDB
的连接并创建数据库。
为了便于初始化新数据库,您可以使用可在CREATE DATABASE
期间指定的预配置模板数据库。
答案 2 :(得分:0)
我通过创建数据库权限并使用不是我的名字的数据库解决了这个问题(由于某种原因,我无法连接到虚拟数据库并删除数据库,如果它是我的名字)。