无法使用 ormlite 刷新物化视图
Can't refresh materialized view with 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\worke4cc16641be8c0\src\ServiceStack.OrmLite\OrmLiteResultsFilterExtensions.cs:line 32
at ServiceStack.OrmLite.OrmLiteExecFilter.Exec[T](IDbConnection dbConn, Func`2 filter) in C:\BuildAgent\worke4cc16641be8c0\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()
但总是出现同样的问题。
它说关系不存在但确实存在。此外,连接字符串肯定是正确的数据库,它可以 read/write 没问题。
这曾经有效,但现在似乎已停止工作,我不明白为什么。
这不会成为 OrmLite 的问题,它只是将 SQL as-is 发送到返回服务器 PostgreSQL 错误的 Npgsql ADO.NET 提供程序.
由于某种原因,连接字符串无法查看或访问您的 product_book
实体化视图,一些潜在的问题可能是用户可能无法访问它,或者它在不同的架构中。
我已经将 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\worke4cc16641be8c0\src\ServiceStack.OrmLite\OrmLiteResultsFilterExtensions.cs:line 32
at ServiceStack.OrmLite.OrmLiteExecFilter.Exec[T](IDbConnection dbConn, Func`2 filter) in C:\BuildAgent\worke4cc16641be8c0\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()
但总是出现同样的问题。
它说关系不存在但确实存在。此外,连接字符串肯定是正确的数据库,它可以 read/write 没问题。
这曾经有效,但现在似乎已停止工作,我不明白为什么。
这不会成为 OrmLite 的问题,它只是将 SQL as-is 发送到返回服务器 PostgreSQL 错误的 Npgsql ADO.NET 提供程序.
由于某种原因,连接字符串无法查看或访问您的 product_book
实体化视图,一些潜在的问题可能是用户可能无法访问它,或者它在不同的架构中。