Я только что получил эту ошибку при вызове API:

{
  "error": "pq: column \"activecurrency\" of relation \"tenants\" does not exist",
  "success": false
}

Я полностью осознаю, что SQL чувствителен к регистру, поэтому я убедился, что все, что связано с активной валютой, определено как activeCurrency в запросе, в db и в формате json.

Ниже приведен мой исходный запрос в файле go:

const TENANT_CREATE_QUERY = `INSERT INTO tenants (id, name, key, created_at, updated_at, activeCurrency) VALUES ($1, $2, $3, $4, $5, $6) RETURNING *;`

Мне потребовалось много времени, чтобы понять, что проблема все еще кроется в приведенной выше строке, знаете, где?

Сообщение об ошибке «pq: столбец «activecurrency» отношения «tenants» не существует» указывает на то, что PostgreSQL ищет столбец с именем «activecurrency» в таблице «tenants» и не находит его.

Наиболее вероятная причина этой ошибки заключается в том, что имя столбца в таблице на самом деле «activeCurrency» (с прописной «C»), но запрос использует «activeCurrency» (с строчной «c»).

PostgreSQL чувствителен к регистру, когда речь идет об именах столбцов, поэтому, если столбец определяется с помощью заглавной буквы в схеме таблицы, я должен использовать точно такой же регистр при ссылке на столбец в SQL-запросе.

Чтобы решить эту проблему, я должен обновить запрос SQL, чтобы использовать правильное имя столбца с точно таким же регистром, как определено в таблице:

const TENANT_CREATE_QUERY = `INSERT INTO tenants (id, name, key, created_at, updated_at, "activeCurrency") VALUES ($1, $2, $3, $4, $5, $6) RETURNING *;`

Обратите внимание на использование двойных кавычек вокруг «activeCurrency», чтобы гарантировать, что PostgreSQL рассматривает его как идентификатор с учетом регистра. Да, вы правильно видите! просто двойная кавычка activeCurrency!!

Как только я внес это изменение, запрос работал правильно и не выдавал ошибку «столбец не существует».

Бедный я, глупый я и глупый я!