设置
问题上下文
我已经创建了一个带有用于集成测试的测试项目的ASP.NET Core 2.2 Web API。
(我之前在SQL Server中使用过Respawn多次,但这是我第一次在Postgres中使用它。)
其中一项集成测试的示例如下:
[Fact]
public async Task Get_AllItemsAsync_ReturnOKStatusCode()
{
// Arrange
var itemsToAdd = new List<Item>()
{
new Item("Test", 1),
new Item("Dummy", 2)
};
var host = _fixture.Server.Host;
using (var scope = host.Services.CreateScope())
{
var scopedServices = scope.ServiceProvider;
var dbContext = scopedServices.GetRequiredService<ItemsDbContext>();
dbContext.Items.AddRange(itemsToAdd);
dbContext.SaveChanges();
}
var request = new HttpRequestMessage(HttpMethod.Get, "api/v1/items");
// Act
var response = await _fixture.Client.SendAsync(request);
// Assert
var responseString = response.Content.ReadAsStringAsync().Result;
var actualItems = JsonConvert.DeserializeObject<List<ItemViewModel>>(responseString);
Assert.Equal(HttpStatusCode.OK, response.StatusCode);
Assert.Equal(itemsToAdd.Count, actualItems.Count);
// Cleanup
using (var conn = new NpgsqlConnection("Server=localhost;Database=MyDb;User Id=postgres;Password=SecretPassword!;")
{
await conn.OpenAsync();
await _checkpoint.Reset(conn); // Error happens here
}
}
当Respawn尝试将我的数据库恢复到检查点时,就会发生此问题。它返回以下错误:
消息:Npgsql.PostgresException:42501:权限被拒绝:“ pg_largeobject”是系统目录
我只是从Postgres开始,但据我所知,postgres
用户本质上是服务器上的超级用户,所以我不确定为什么它不具有某些权限
我已经尝试过搜索该异常,但是我找不到与Respawn一起发生的与此错误有关的任何信息,因此我决定在此处发布。