如何解决无法使用Ormlite刷新物化视图
我已经将ServiceStack更新为项目的最新版本,现在此行似乎给了我一些问题:
_db.ExecuteNonQuery("REFRESH MATERIALIZED VIEW product_book;");
它在日志中生成此错误:
2020-08-25 23:14:26.8896||DEBUG|OrmLiteResultsFilterExtensions|SQL: REFRESH MATERIALIZED VIEW product_book; |url: |action:
2020-08-25 23:17:19.6129||ERROR|ImportBookHelper|Error reading xml Npgsql.PostgresException (0x80004005): 42P01: relation "product_book" does not exist
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() in C:\projects\npgsql\src\Npgsql\NpgsqlConnector.cs:line 973
--- End of stack trace from previous location where exception was thrown ---
at Npgsql.NpgsqlDataReader.NextResult(Boolean async,Boolean isConsuming) in C:\projects\npgsql\src\Npgsql\NpgsqlDataReader.cs:line 449
at Npgsql.NpgsqlDataReader.NextResult() in C:\projects\npgsql\src\Npgsql\NpgsqlDataReader.cs:line 298
at Npgsql.NpgsqlCommand.ExecuteReaderAsync(CommandBehavior behavior,Boolean async,CancellationToken cancellationToken) in C:\projects\npgsql\src\Npgsql\NpgsqlCommand.cs:line 1178
at Npgsql.NpgsqlCommand.ExecuteNonQuery(Boolean async,CancellationToken cancellationToken) in C:\projects\npgsql\src\Npgsql\NpgsqlCommand.cs:line 977
at Npgsql.NpgsqlCommand.ExecuteNonQuery() in C:\projects\npgsql\src\Npgsql\NpgsqlCommand.cs:line 959
at ServiceStack.OrmLite.OrmLiteResultsFilterExtensions.ExecNonQuery(IDbCommand dbCmd,String sql,Object anonType) in C:\BuildAgent\work\27e4cc16641be8c0\src\ServiceStack.OrmLite\OrmLiteResultsFilterExtensions.cs:line 32
at ServiceStack.OrmLite.OrmLiteExecFilter.Exec[T](IDbConnection dbConn,Func`2 filter) in C:\BuildAgent\work\27e4cc16641be8c0\src\ServiceStack.OrmLite\OrmLiteExecFilter.cs:line 64
Exception data:
Severity: ERROR
SqlState: 42P01
MessageText: relation "product_book" does not exist
File: namespace.c
Line: 407
Routine: RangeVarGetRelidExtended|url: |action:
我尝试在Postgresql控制台中运行REFRESH MATERIALIZED VIEW product_book;
,并且运行正常。我也尝试过使用ExecuteSql()
,但始终是同样的问题。
它说关系不存在,但确实存在。另外,连接字符串绝对是正确的数据库,它可以读写。
这曾经可以工作,但是现在看来已经停止工作了,我不知道为什么。
解决方法
OrmLite不会有任何问题,它只是将SQL原样发送到Npgsql ADO.NET提供程序,该提供程序将返回服务器PostgreSQL错误。
由于某种原因,连接字符串不可见或无法访问您的product_book
实例化视图,因此可能存在一些潜在的问题,即用户可能无法访问它,或者它位于其他模式中。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。