Выберите * из таблицы с NodeJS // ОШИБКА: { ошибка: отношение mytable не существует

Я получаю следующую ошибку во время моего запроса SELECT из базы данных PostgreSQL.

ERROR: { error: relation "free_subnets" does not exist
    at Connection.parseE (/home/ec2-user/environment/node_modules/pg/lib/connection.js:604:11)
    at Connection.parseMessage (/home/ec2-user/environment/node_modules/pg/lib/connection.js:401:19)
    at Socket.<anonymous> (/home/ec2-user/environment/node_modules/pg/lib/connection.js:121:22)
    at Socket.emit (events.js:198:13)
    at addChunk (_stream_readable.js:288:12)
    at readableAddChunk (_stream_readable.js:269:11)
    at Socket.Readable.push (_stream_readable.js:224:10)
    at TCP.onStreamRead [as onread] (internal/stream_base_commons.js:94:17)
  name: 'error',
  length: 103,
  severity: 'ERROR',
  code: '42P01',
  detail: undefined,
  hint: undefined,
  position: '15',
  internalPosition: undefined,
  internalQuery: undefined,
  where: undefined,
  schema: undefined,
  table: undefined,
  column: undefined,
  dataType: undefined,
  constraint: undefined,
  file: 'parse_relation.c',
  line: '874',
  routine: 'parserOpenTable' }

Если я использую команду psql и делаю там выбор, она работает.

\dt дает мне отношение:


   Schema    |     Name     | Type  |  Owner   
-------------+--------------+-------+----------
 subnet_calc | free_subnets | table | postgres

Для параметра Search_path задано значение: subnet_calc, public.

Я создал таблицу с пользователем postgres, поэтому я являюсь владельцем схемы subnet_calc и таблицы free_subnets.

Мой фиктивный код nodejs выглядит следующим образом:

const pg = require('pg');


const cs = 'postgres://postgres:[email protected]:5432/subnet_calculator';

const client = new pg.Client(cs);
client.connect();

client.query('SELECT * FROM subnet_calc.free_subnets', function(result) {
  console.log(result);
});

В чем может быть проблема?

Заранее спасибо за помощь!


person N P    schedule 17.02.2020    source источник
comment
Пожалуйста, не публикуйте скриншоты, если это просто текст. Скопируйте/вставьте его, чтобы его было легче искать и изучать.   -  person VLAZ    schedule 17.02.2020
comment
Пожалуйста, размещайте текст, а не ссылки изображений на текст. См. страницу Как спросить.   -  person Dave Newton    schedule 17.02.2020
comment
Привет, ВЛАЗ и Дэйв Ньютон, я добавил тексты вместо скриншотов.   -  person N P    schedule 17.02.2020


Ответы (2)


вам нужно установить путь поиска для него следующим образом:

db.query("SET search_path TO 'subnet_calc';")

а затем выполните запрос:

const query = `SELECT * FROM free_subnets`

db.query(query)
person Raj Verma    schedule 17.02.2020
comment
Привет Радж, спасибо за ваш ответ. К сожалению, это не работает. На самом деле SEARCH_PATH уже был настроен на это. - person N P; 17.02.2020
comment
как вы указали путь поиска? Я предлагаю попробовать установить его отдельно, а затем запустить запрос. Посмотрите, какие результаты вы получите. - person Raj Verma; 18.02.2020
comment
``` const pg = require('pg'); const cs = 'postgres://postgres:password@anyhost:5432/anydb'; постоянный клиент = новый pg.Client(cs); клиент.подключить(); client.query(SET search_path TO 'subnet_calc';) client.query('SELECT * from free_subnets;') .then(res =› console.log(res.rows[0])) .catch(e =› console. error(e.stack)) ``` Я не понимаю вашу точку зрения. Я пробовал это и с вышеупомянутым кодом, и это не работает. - person N P; 18.02.2020

Я мог бы решить проблему. Это была моя ошибка, таблицы были созданы в БД postgres, а не в subnet_calculator.

Я закрою этот вопрос.

person N P    schedule 18.02.2020
comment
Это немного грустно и смешно, но уважительная причина. Удачи! - person Raj Verma; 18.02.2020