#servicestack #ormlite-servicestack
#servicestack #ormlite-servicestack
Вопрос:
Я обновил 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:projectsnpgsqlsrcNpgsqlNpgsqlConnector.cs:line 973
--- End of stack trace from previous location where exception was thrown ---
at Npgsql.NpgsqlDataReader.NextResult(Boolean async, Boolean isConsuming) in C:projectsnpgsqlsrcNpgsqlNpgsqlDataReader.cs:line 449
at Npgsql.NpgsqlDataReader.NextResult() in C:projectsnpgsqlsrcNpgsqlNpgsqlDataReader.cs:line 298
at Npgsql.NpgsqlCommand.ExecuteReaderAsync(CommandBehavior behavior, Boolean async, CancellationToken cancellationToken) in C:projectsnpgsqlsrcNpgsqlNpgsqlCommand.cs:line 1178
at Npgsql.NpgsqlCommand.ExecuteNonQuery(Boolean async, CancellationToken cancellationToken) in C:projectsnpgsqlsrcNpgsqlNpgsqlCommand.cs:line 977
at Npgsql.NpgsqlCommand.ExecuteNonQuery() in C:projectsnpgsqlsrcNpgsqlNpgsqlCommand.cs:line 959
at ServiceStack.OrmLite.OrmLiteResultsFilterExtensions.ExecNonQuery(IDbCommand dbCmd, String sql, Object anonType) in C:BuildAgentwork27e4cc16641be8c0srcServiceStack.OrmLiteOrmLiteResultsFilterExtensions.cs:line 32
at ServiceStack.OrmLite.OrmLiteExecFilter.Exec[T](IDbConnection dbConn, Func`2 filter) in C:BuildAgentwork27e4cc16641be8c0srcServiceStack.OrmLiteOrmLiteExecFilter.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:
Я попытался запустить REFRESH MATERIALIZED VIEW product_book;
в консоли postgresql, и он работает нормально. Я также пытался использовать ExecuteSql()
, но всегда одна и та же проблема.
Он говорит, что отношение не существует, но оно существует. Кроме того, строка подключения определенно относится к нужной базе данных, и она может нормально читать / записывать.
Раньше это работало, но теперь, похоже, перестало работать, и я не могу понять, почему.
Ответ №1:
Это не будет проблемой с ORMLite, который просто отправляет SQL как есть в Npgsql ADO.NET поставщик, который возвращает ошибку сервера PostgreSQL.
По какой-то причине строка подключения не имеет видимости или доступа к вашему product_book
материализованному виду, некоторые потенциальные проблемы могут заключаться в том, что у пользователя может не быть доступа к нему, или он находится в другой схеме.
Комментарии:
1. @Guerrilla попробуйте использовать vanilla ADO.NET скорее всего, вы получите тот же результат