我习惯CommandTimeout=5设置超时,但不行。
这是我的代码:
Dim con As New NpgsqlConnection
Dim cmd As New NpgsqlCommand
Dim conStr As String
Try
Dim sql = "Select * from dat_extract_text a join dat_replace_text b on a.tm_id=b.tm_id
join dat_base_text_dt c on c.tm_id=a.tm_id
join dat_base_text_dt_font d on d.tm_id=c.tm_id
limit 250000"
conStr = "Server=192.168.1.10;Port=5434;UserId=testuser;Password=1234;Database=testdb;CommandTimeout=5;"
con.ConnectionString = conStr
con.Open()
cmd.Connection = con
cmd.CommandText = sql
Dim st = DateTime.Now
Dim rs = cmd.ExecuteNonQuery
Dim et = DateTime.Now
Dim t = (et - st).TotalSeconds
Catch ex As Exception
End …Run Code Online (Sandbox Code Playgroud) 我目前正在使用 postgres 枚举
CREATE TYPE http_action_enum AS ENUM ('GET', 'HEAD', 'POST', 'PUT', 'DELETE', 'CONNECT', 'OPTIONS', 'TRACE', 'PATCH');
CREATE TABLE IF NOT EXISTS response
(
id UUID PRIMARY KEY,
http_action http_action_enum NOT NULL
);
Run Code Online (Sandbox Code Playgroud)
但是当我使用 ef 框架插入 postgres 数据库时,我不断遇到以下错误:
Exception data:
Severity: ERROR
SqlState: 42804
MessageText: column "destination" is of type source_dest_enum but expression is of type integer
Hint: You will need to rewrite or cast the expression.
Run Code Online (Sandbox Code Playgroud)
当我检查响应数据类型时,它实际上是正确的枚举而不是整数。
存储库.cs
public async Task<Response> InsertRecord(Response response, CancellationToken cancellationToken)
{
await dBContext.response.AddAsync(response, cancellationToken).ConfigureAwait(true); …Run Code Online (Sandbox Code Playgroud) 我正在使用 NpgSqlConnection for .net core Web api 项目。当前的 PostgreSQL 服务器已移动到另一台服务器,需要使用客户端证书进行连接。我们提供了 3 个证书文件,分别名为 client-cert.pem、client-key.pem 和 server-ca.pem。我能够通过浏览器中的 pgAdmin 使用客户端证书和密钥文件连接到服务器。但是,我无法从我的代码进行连接。尝试了网上的几种方法,但仍然出现以下错误。
{“28000:连接需要有效的客户端证书”}
我正在尝试的代码片段如下所示。
var connectionString = "User ID=" + _dOptions.Value.AuthenticationCredentials.UserName
+ ";Password=" + _dOptions.Value.AuthenticationCredentials.PassWord
+ ";Server=" + _dOptions.Value.Server
+ ";Port=" + _dOptions.Value.Port.ToString()
+ ";Database=" + _dOptions.Value.Database
+ ";Integrated Security=true;Pooling=true;SSL Mode=Require;Trust Server Certificate=true";
_con = new NpgsqlConnection(connectionString);
_con.ProvideClientCertificatesCallback += new ProvideClientCertificatesCallback(MyClientCertificates);
Run Code Online (Sandbox Code Playgroud)
private void MyClientCertificates(X509CertificateCollection certificates)
{
var cert = new X509Certificate("C:\\Users\\c-Anish\\Documents\\cloud_sql_replica_certs\\DEV\\client-cert.pem");
certificates.Add(cert);
}
Run Code Online (Sandbox Code Playgroud)
另外,这里我们仅使用名为 client-cert.pem 的客户端证书,但是,我认为我们可能需要使用 client-key.pem ?如果是这样,我该如何添加?我在这里缺少什么?
任何帮助将不胜感激,因为我一直在解决这个问题。
我目前正在尝试使用 ASP.NET Core 6 MVC 和 Entity Framework Core 6 和 npgsql 启动一个新项目。
\n当我尝试添加一个具有外国身份的实体时ModelState.IsValid不断返回 false - 因为模型不会扩展外国实体。
基本上我遵循了官方文档:
\n所以我的课程看起来像:
\nnamespace PV.Models\n{\n public class Fakultaet\n {\n [Key]\n public int FakultaetID { get; set; }\n [Required]\n public string FakuName { get; set; }\n }\n\n public class Studiengang\n {\n [Key]\n public int StudiengangID { get; set; }\n [Required]\n public string StudiengangName { get; set;}\n [Required,ForeignKey("Fakultaet")]\n public int FakultaetID { get; set; …Run Code Online (Sandbox Code Playgroud) 在 RavenDB 5.4+ 中,我想使用 Raven 的 Npgsql 内置工厂配置一个SQL ETL 任务,将数据卸载到 PostgreSQL 数据库。我遇到的问题是我希望将整个文档 ( this) 存储在jsonb数据列中。
问题:如何实现将整个文档(例如this下面的 ETL 转换示例中的)存储到 Postgres?
我的目标是不必Foo手动指定对象的字段/列。
Postgres 表示例:
create table public.foo
(
id text,
data jsonb
);
Run Code Online (Sandbox Code Playgroud)
RavenDB 中的 ETL 转换脚本示例:
loadToFoo ({
id: id(this),
data: this // <-- the issue
});
Run Code Online (Sandbox Code Playgroud)
这会导致异常:
Npgsql.PostgresException (0x80004005): 42804: 列“data”的类型为 jsonb,但表达式的类型为文本
我尝试过以下替代方案:
data: JSON.parse(this)
Error:
System.ArgumentException: Expected string but got Symbol
---
data: JSON.stringify(this)
Error:
Npgsql.PostgresException (0x80004005): 42804: column "data" …Run Code Online (Sandbox Code Playgroud) 我一直在使用C#为不同数据库的产品编写具体的提供程序实现.W/out进入细节,其中一列是字节数组类型(postgres中的bytea - 由于首选项bytea是在blob上选择的).唯一的问题是,它不会返回插入的相同值.当我插入Int32("0")时,我得到8 [92和8x 48](而不是[0,0,0,0]).我需要一个性能明智的解决方案,它将返回我插入的纯字节,而不是8个字节上的值"0"的ASCII表示.
我正在使用Npgsql来检索数据.如果有人知道c#的解决方案,我也很乐意学习它.
编辑: Postgres 9.0,.Net 3.5
简单化
命令查询: - 内部只执行插入语句
select InsertOrUpdateEntry(:nodeId, :timeStamp, :data)
Run Code Online (Sandbox Code Playgroud)
数据参数:
byte [] value = BitConverter.GetBytes((int)someValue);
Run Code Online (Sandbox Code Playgroud)
参数分配如下
command.Parameters.Add(new NpgsqlParameter("data", NpgsqlDbType.Bytea)
{ Value = value });
Run Code Online (Sandbox Code Playgroud)
选择陈述:
select * from Entries
Run Code Online (Sandbox Code Playgroud)
我输入的字节数组相同,我想回去.我将衷心感谢您的帮助.
输入:0 0 0 0
电流输出:92 48 48 48 48 48 48 48 48
预期输出:0 0 0 0
我得到的最新错误是
ERROR: 42P01: relation "dbo.__MigrationHistory" does not exist
Run Code Online (Sandbox Code Playgroud)
但我确信这只是因为早先没有正确设置.
我目前正在尝试设置实体框架4.4代码首先使用Npgsql 2.0.12,我已经完成了以下操作,它似乎至少现在连接到数据库,但是当我做context.saveChanges()时给我上面的错误;
更新了.net 2.0.50727的machine.config;
<add name ="Npgsql Data Provider"invariant ="Npgsql"support ="FF"description =".Postgresql Server的Net Framework数据提供程序"type ="Npgsql.NpgsqlFactory,Npgsql,Version = 2.0.12.0,Culture = neutral, PublicKeyToken = 5d8b90d52f46fda7"/>
将dll添加到项目中
将app.config更改为如下所示;
<configuration>
<configSections>
<section name="entityFramework"
type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection,
EntityFramework,
Version=4.4.0.0, Culture=neutral,
PublicKeyToken=b77a5c561934e089"
requirePermission="false" />
</configSections>
<system.data>
<DbProviderFactories>
<remove invariant="Npgsql"></remove>
<add name="Npgsql Data Provider"
invariant="Npgsql"
description=".Net Framework Data Provider for Postgresql Server"
type="Npgsql.NpgsqlFactory, Npgsql,
Version=2.0.12.0, Culture=neutral,
PublicKeyToken=5d8b90d52f46fda7" />
</DbProviderFactories>
</system.data>
<connectionStrings>
<add name="DataContext"
connectionString="Server=127.0.0.1;Port=5432;Database=postgres;User Id=postgres;Password=*******;CommandTimeout=20;"
providerName="Npgsql" />
</connectionStrings>
</configuration>
Run Code Online (Sandbox Code Playgroud)传入的数据如下所示
public …
是否可以在NpgSql连接字符串中指定ApplicationName?以下资源通常有帮助,但在这种情况下它什么也没说:Npgsql连接字符串
我有一个名为带有触发器的证据表,它调用一个存储过程,它基本上按月进行表分区.但是,当我开始在加载下插入大量行时,我得到一个模糊的错误:
Npgsql.NpgsqlException: query string argument of EXECUTE is null
Severity: ERROR Code: 22004 at Npgsql.NpgsqlState.<ProcessBackendResponses_Ver_3>d__a.MoveNext() in c:\C#Apps\github.npgsql.Npgsql.stock\src\Npgsql\NpgsqlState.cs:line890 at Npgsql.ForwardsOnlyDataReader.GetNextResponseObject() in c:\C#Apps\github.npgsql.Npgsql.stock\src\Npgsql\NpgsqlDataReader.cs:line 1175 at
Npgsql.ForwardsOnlyDataReader.GetNextRowDescription() in c:\C#Apps\github.npgsql.Npgsql.stock\src\Npgsql\NpgsqlDataReader.cs:line 1191 at
Npgsql.ForwardsOnlyDataReader.NextResult() in c:\C#Apps\github.npgsql.Npgsql.stock\src\Npgsql\NpgsqlDataReader.cs:line 1377 at
Npgsql.NpgsqlCommand.ExecuteNonQuery() in c:\C#Apps\github.npgsql.Npgsql.stock\src\Npgsql\NpgsqlCommand.cs:line523
Run Code Online (Sandbox Code Playgroud)
我的系统具有自动重试功能,最终每个记录都插入到数据库中,但是在负载很高的许多异常之后.
数据库是CentOS 6服务器上的PostgreSQL 9.3,客户端是使用Npgsql驱动程序的C#.NET.
表:
CREATE TABLE evidence
(
id uuid NOT NULL,
notification_id uuid NOT NULL,
feedback character varying(200),
result character varying(20),
trigger_action_type character varying(200),
trigger_action_id uuid,
data_type integer NOT NULL,
data bytea,
name character varying(30),
CONSTRAINT pk_evidence PRIMARY KEY (id)
);
Run Code Online (Sandbox Code Playgroud)
触发: …
我有一个正在开发中的Azure网站,可连接到新的Azure Postgresql数据库。
这个错误似乎是在周末开始的。上次我上周五尝试时,它运行良好。我的Azure网站计划的IP地址似乎已更改,因此我编辑了Azure Postgres防火墙规则。
真正奇怪的部分是“ 0.0.0.0”主机。Web服务器对数据库的IP地址为“ 0.0.0.0”的样子如何?我确实也向防火墙添加了“ 0.0.0.0”,但这没有任何效果。我当然不能直接在Azure上编辑pg_hba.conf文件。
另外,从我的开发计算机运行时,它也可以正常工作。我尝试重新部署我的网站,没有任何乐趣。
这是完整的堆栈跟踪:
[PostgresException (0x80004005): 28000: no pg_hba.conf entry for host "0.0.0.0", user "UserName", database "orders", SSL on]
Npgsql.NpgsqlConnector.DoReadMessage(DataRowLoadingMode dataRowLoadingMode, Boolean isPrependedMessage) +310
Npgsql.NpgsqlConnector.ReadMessageWithPrepended(DataRowLoadingMode dataRowLoadingMode) +195
Npgsql.NpgsqlConnector.HandleAuthentication(String username, NpgsqlTimeout timeout) +57
Npgsql.NpgsqlConnector.Open(NpgsqlTimeout timeout) +299
Npgsql.ConnectorPool.Allocate(NpgsqlConnection conn, NpgsqlTimeout timeout) +573
Npgsql.NpgsqlConnection.OpenInternal() +366
Npgsql.NpgsqlConnection.Open() +4
System.Data.Common.DbDataAdapter.FillInternal(DataSet dataset, DataTable[] datatables, Int32 startRecord, Int32 maxRecords, String srcTable, IDbCommand command, CommandBehavior behavior) +120
System.Data.Common.DbDataAdapter.Fill(DataTable[] dataTables, Int32 startRecord, Int32 maxRecords, IDbCommand command, CommandBehavior behavior) +160
System.Data.Common.DbDataAdapter.Fill(DataTable dataTable) +108
MapHazardsPro4.Functs.GetUserTable() …Run Code Online (Sandbox Code Playgroud) npgsql ×10
postgresql ×8
c# ×7
.net-core ×1
ado.net ×1
asp.net-core ×1
azure ×1
binary-data ×1
bytearray ×1
c#-4.0 ×1
enums ×1
jint ×1
plpgsql ×1
ravendb ×1
vb.net ×1