nlog не вставлял базу данных, когда имя таблицы прописно - PullRequest
0 голосов
/ 17 июня 2020

Это отлично работает;

<targets>
    <target name="database" xsi:type="Database"
            dbProvider="Npgsql.NpgsqlConnection, Npgsql"
            connectionString="User ID=postgres;Password=xxx;Host=192.xx;Port=5432;Database=xxx;">
      <!--Pooling=true;-->
      <commandText>
        insert into systemlogs(...;
      </commandText>

Но при изменении имени таблицы как

"SystemLogs"

(то же самое, что и в базе данных, ну) выдает исключение; "не удалось найти имя таблицы" системные журналы "

смысла нет, но почему nlog не распознает обновленное имя таблицы?

Ответы [ 2 ]

1 голос
/ 18 июня 2020

Если вы указали имя таблицы как "SystemLogs" в двойных кавычках, вам также нужно будет использовать его таким образом:

insert into "SystemLogs" ...

В Postgresql идентификаторах в кавычках сохраняются в случае, если они цитируются, и на них нужно ссылаться таким же образом. Если вы создаете имя SystemLogs без кавычек, оно будет свернуто в нижний регистр. Подробнее см. Ниже:

https://www.postgresql.org/docs/current/sql-syntax-lexical.html#SQL -SYNTAX-IDENTIFIERS

1 голос
/ 18 июня 2020

В PostgreSQL все идентификаторы в кавычках (например, имена таблиц и столбцов) чувствительны к регистру:

См .: Учитываются ли PostgreSQL имена столбцов?

Значит, NLog не может их найти, если вы используете кавычки и неправильный регистр.

Поэтому не используйте кавычки и не используйте правильный регистр

...