Npgsql 其他每个查询都会失败,并出现语法错误

Npgsql 其他每个查询都会失败,并出现语法错误,npgsql,cockroachdb,Npgsql,Cockroachdb,我使用CockroachDb和Npgsql驱动程序 我有一个简单的用户表。当我插入新记录时,所有其他查询都会失败,并出现语法错误,这在我看来很奇怪 创建表用户( RequestIdentifier BYTEA不为NULL唯一, 标识符UUID主键默认gen_random_UUID(), Id INT8不为NULL默认唯一\u rowid(), 电子邮件BYTEA非空唯一, 用户名BYTEA不为空, PasswordHash BYTEA不为空 ); var q=@” 插入用户(请求标识符、电子邮

我使用CockroachDb和Npgsql驱动程序

我有一个简单的用户表。当我插入新记录时,所有其他查询都会失败,并出现语法错误,这在我看来很奇怪

创建表用户(
RequestIdentifier BYTEA不为NULL唯一,
标识符UUID主键默认gen_random_UUID(),
Id INT8不为NULL默认唯一\u rowid(),
电子邮件BYTEA非空唯一,
用户名BYTEA不为空,
PasswordHash BYTEA不为空
);
var q=@”
插入用户(请求标识符、电子邮件、用户名、密码哈希)
值(@RequestIdentifier、@Email、@Username、@PasswordHash)
关于冲突(请求标识符)
无所事事
返回标识符
";
字节[]userIdentifier=null;
使用(var cmd=newnpgsqlcommand(q,dbConn)){
Add(“RequestIdentifier”,NpgsqlDbType.Bytea);
cmd.Parameters.Add(“Email”,NpgsqlDbType.Bytea);
cmd.Parameters.Add(“用户名”,NpgsqlDbType.Bytea);
Add(“PasswordHash”,NpgsqlDbType.Bytea);
wait cmd.PrepareAsync();
cmd.Parameters[0]。Value=msg.RequestIdentifier;
cmd.Parameters[1].Value=msg.Email;
cmd.Parameters[2].Value=msg.Username;
cmd.Parameters[3]。Value=passwordHash;
试一试{
userIdentifier=((Guid)wait cmd.ExecuteScalarAsync()).ToByteArray();
}当(e.SqlState==SqlErrorCodes.UniqueViolation)时捕获(PostgresException e){
logger.Information(“Email{Email}已在使用”,UTF8.GetString(msg.Email));
}渔获物(e期后){
logger.Error(“{Exception}”,e);
投掷;
}
}
Npgsql.postgresception(0x80004005):42601:处于或接近“关闭”:语法错误
在Npgsql.NpgsqlConnector.c_uuudisplayClass160_0.d.MoveNext()中
---来自引发异常的上一个位置的堆栈结束跟踪---
在Npgsql.NpgsqlConnector.c_uuudisplayClass160_0.d.MoveNext()中
---来自引发异常的上一个位置的堆栈结束跟踪---
在Npgsql.NpgsqlConnector.c_uuudisplayClass160_0.d.MoveNext()中
---来自引发异常的上一个位置的堆栈结束跟踪---
位于Npgsql.NpgsqlDataReader.NextResult(布尔异步,布尔isConsuming)
在Npgsql.NpgsqlCommand.ExecuteReaderAsync(CommandBehavior行为,布尔异步,CancellationToken CancellationToken)
在Npgsql.NpgsqlCommand.ExecuteScalar(布尔异步,CancellationToken CancellationToken)
在C:\Users\Che Khen Kho\Desktop\dotnet\owldauthentication\Services\CockroachDbStorageService.CreateOrRetrieveExistingUser(SignUpMessage msg)中的owldauthentication.Services.CockroachDbStorageService.CreateOrRetrieveExistingUser(SignUpMessage msg):第94行
异常数据:
严重性:错误
SqlState:42601
MessageText:在或接近“关闭”:语法错误
详细信息:源SQL:
全部关闭
^
文件:lexer.go
电话号码:175
例行程序:错误
如果我尝试,比如说,10个查询,其中5个会因这个异常而失败,但通常会插入超过5行(有时是6行,有时是8行,等等)


我也用PostgreSQL对它进行了测试(使用uuid_generate_v4而不是gen_random_uuid和BIGSERIAL for Id列),一切正常。

我认为这一问题()已经解决了,它在CockroachDB v20.1中得到了修复

Npgsql.PostgresException (0x80004005): 42601: at or near "close": syntax error
   at Npgsql.NpgsqlConnector.<>c__DisplayClass160_0.<<DoReadMessage>g__ReadMessageLong|0>d.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
   at Npgsql.NpgsqlConnector.<>c__DisplayClass160_0.<<DoReadMessage>g__ReadMessageLong|0>d.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
   at Npgsql.NpgsqlConnector.<>c__DisplayClass160_0.<<DoReadMessage>g__ReadMessageLong|0>d.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
   at Npgsql.NpgsqlDataReader.NextResult(Boolean async, Boolean isConsuming)
   at Npgsql.NpgsqlCommand.ExecuteReaderAsync(CommandBehavior behavior, Boolean async, CancellationToken cancellationToken)
   at Npgsql.NpgsqlCommand.ExecuteScalar(Boolean async, CancellationToken cancellationToken)
   at OwlAuthentication.Services.CockroachDbStorageService.CreateOrRetrieveExistingUser(SignUpMessage msg) in C:\Users\Che Khen Kho\Desktop\dotnet\OwlAuthentication\Services\CockroachDbStorageService.cs:line 94
  Exception data:
    Severity: ERROR
    SqlState: 42601
    MessageText: at or near "close": syntax error
    Detail: source SQL:
CLOSE ALL
^
    File: lexer.go
    Line: 175
    Routine: Error