Я только что получил эту ошибку при вызове 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!!
Как только я внес это изменение, запрос работал правильно и не выдавал ошибку «столбец не существует».
Бедный я, глупый я и глупый я!