首页 > 解决方案 > 如何连接到已被强制删除并使用 postgresql 重新创建的测试数据库?

问题描述

我正在设置一些集成测试,我需要能够删除“testdb”以删除所有测试数据,创建“testdb”,然后运行迁移以更新架构。

我正在使用以下代码删除测试数据库:

DROP DATABASE IF EXISTS testdb WITH (FORCE);

然后我使用以下代码再次创建它:

CREATE DATABASE testdb TEMPLATE template0;

我能够重新创建它并运行迁移,但是每当我尝试连接到这个新的数据库实例并运行任何 SQL 时,我都会不断收到以下错误:

  Npgsql.NpgsqlException : Exception while writing to stream
      ----> System.IO.IOException : Unable to write data to the transport connection: An existing connection was forcibly closed by the remote host..
      ----> System.Net.Sockets.SocketException : An existing connection was forcibly closed by the remote host.

我几乎可以肯定这是因为我已经强制删除了数据库,但我不确定为什么我无法重新连接到数据库并执行 SQL。

出于某种原因,连接似乎一直在引用 testdb 的“删除的实例”,而不是新创建的。无论如何我可以确保连接指向 testdb 的新实例吗?

标签: c#databasepostgresql

解决方案


推荐阅读