使用此代码,在数据库中找不到名为“json”的 PostgreSQL 类型
连接字符串
var connString = "Host=REMOVE;Port=26257;Username=daniel;Password=REMOVED;Database=REMOVED";
var dataSourceBuilder = new NpgsqlDataSourceBuilder(connString);
var dataSource = dataSourceBuilder.Build();
var conn = dataSource.OpenConnection();
await using (var cmd = new NpgsqlCommand("SELECT * FROM table_name", conn))
await using (var reader = await cmd.ExecuteReaderAsync())
{
while (await reader.ReadAsync())
Console.WriteLine(reader.GetString(0));
}
这会导致控制台输出
A PostgreSQL type with the name 'json' was not found in the database
at Npgsql.Internal.NpgsqlDatabaseInfo.GetPostgresTypeByName(String pgName)
at Npgsql.TypeMapping.SystemTextJsonTypeHandlerResolver.PgType(String pgTypeName)
at Npgsql.TypeMapping.SystemTextJsonTypeHandlerResolver..ctor(NpgsqlConnector connector, Dictionary`2 userClrTypes, JsonSerializerOptions serializerOptions)
at Npgsql.TypeMapping.SystemTextJsonTypeHandlerResolverFactory.Create(TypeMapper typeMapper, NpgsqlConnector connector)
at Npgsql.Internal.TypeMapping.TypeMapper.Initialize(NpgsqlDatabaseInfo databaseInfo, List`1 resolverFactories, Dictionary`2 userTypeMappings)
at Npgsql.NpgsqlDataSource.Bootstrap(NpgsqlConnector connector, NpgsqlTimeout timeout, Boolean forceReload, Boolean async, CancellationToken cancellationToken)
at Npgsql.Internal.NpgsqlConnector.Open(NpgsqlTimeout timeout, Boolean async, CancellationToken cancellationToken)
at Npgsql.PoolingDataSource.OpenNewConnector(NpgsqlConnection conn, NpgsqlTimeout timeout, Boolean async, CancellationToken cancellationToken)
at Npgsql.PoolingDataSource.<Get>g__RentAsync|28_0(NpgsqlConnection conn, NpgsqlTimeout timeout, Boolean async, CancellationToken cancellationToken)
at Npgsql.NpgsqlConnection.<Open>g__OpenAsync|42_0(Boolean async, CancellationToken cancellationToken)
at Npgsql.NpgsqlConnection.Open()
at Npgsql.NpgsqlDataSource.OpenConnection()
at Program.<Main>$(String[] args) in C:\Users\danie\RiderProjects\ConsoleApp1\ConsoleApp1\Program.cs:line 7
at Program.<Main>(String[] args)
我正在使用 Jetbrains Rider for c#,它可以在数据库工具中很好地获取数据库。我也可以使用控制台插入和选择,并使用在 Linode 实例上运行的 next.js 代码读取它
我修复了它...这似乎是 npgsql 版本 8.0.0-preview.4 的问题
切换到版本 7.x 将删除此错误消息。