Использование Knex/Postgresql Что это значит? "ошибка: столбец "*" не существует"

У меня был проект, который я отложил на некоторое время, но недавно я стряхнул с него пыль и обновил все пакеты NPM. Теперь, когда я пытаюсь сделать что-либо, связанное с базой данных (используя Knex/Postgresql), я получаю сообщение об ошибке:

error: column "*" does not exist

Это произойдет с, казалось бы, безобидным запросом, например:

select "*" from "some_table" where "id" = $1

Если я запускаю этот запрос непосредственно к БД:

select * from "some_table" where "id" = 1;

это работает нормально. Но независимо от того, что я пытаюсь сделать с knex, запускаю ли он обычный запрос или пытаюсь сбросить всю мою базу данных, я продолжаю получать эту, казалось бы, бессмысленную ошибку.

Кто-нибудь может объяснить, что это значит?

knex.select().table('books') приведет к select * - хотя это был не ваш вопрос, ;]

madflow 08.04.2019 08:18
"*" отличается от *
a_horse_with_no_name 08.04.2019 08:32

Скажите также, какой код вы пишете для knex для генерации этого запроса. Иначе нельзя сказать, почему происходит генерация такого запроса.

Mikael Lepistö 08.04.2019 22:08

Часть проблемы заключается в том, что я не знаю, какой именно код является проблемой: все строки в stacktrace являются node_modules или системными вызовами, и снова я получаю сообщение об ошибке как при попытке запустить сайт, так и при попытке запустить миграцию (и на моем сайте есть много запросов, связанных с этой таблицей). Но благодаря ответу теперь я могу, по крайней мере, начать его отслеживать.

machineghost 09.04.2019 01:39
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
4
856
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Двойные кавычки вокруг * заставляют интерпретировать его не как «все столбцы», а как столбец с таким же именем.

Я не совсем понимаю, почему мой код перешел от выбора * к выбору "*", просто из обновления npm, но, видимо, это то, что произошло, и я могу работать оттуда. Спасибо!

machineghost 09.04.2019 01:37

Просто дополнение для тех, кто читает это позже: я понял, что проблема заключалась в том, что Knex перешел от использования синтаксиса .select('*') для создания предложения SELECT * FROM ... к синтаксису просто .select(). Внесение этого изменения в код должно решить проблему.

machineghost 16.04.2019 20:24

Другие вопросы по теме

Похожие вопросы

Два столбца из таблицы A содержат идентификаторы, которые хранятся в другой таблице B. Как выбрать и получить данные, хранящиеся в таблице B?
Как я могу сделать несколько запросов в postgres
HibernateException: не удалось определить тип исключения класса с помощью собственного запроса spring-data-jpa для postgresql
Использование предложения where в сочетании с подзапросом, результатом которого является запись, содержащая массив
Почему postgresql обнаруживает повторяющийся ключ, если ключ не существует?
Используйте pgcrypto для проверки паролей, сгенерированных password_hash
Как добавить строку в PostqreSQL с помощью activerecord-sinatra?
Как очистить таблицы базы данных в приложении Spring Boot?
Эффективно генерировать все возможные комбинации команд из 4 человек, которые содержат определенных персонажей из 130 символов, и вычислять определенные значения
Можно ли создавать базы данных PostgreSQL с динамическими именами с помощью Golang?