Error relation users does not exist

Error relation users does not exist

У меня есть таблица пользователей, я вижу ее в pgadmin4, но по какой-то причине, когда я использую psql и пытаюсь запустить список пользователей, я получаю следующую ошибку:

Relation “users” does not exist.

Ответ

Это произойдет, если у пользователя psql нет привилегий на уровне схемы. Это сообщение об ошибке может вводить в заблуждение.

Чтобы решить эту проблему, попробуйте подключиться с помощью psql к пользователю admin и запустите:

1.

GRANT USAGE ON SCHEMA public TO <non-admin-user>;

2.

GRANT SELECT, INSERT, UPDATE, DELETE ON ALL TABLES IN SCHEMA public TO <non-admin-user>;

Вам нужно заключить имя таблицы в кавычки. И оно чувствительно к регистру:

SELECT * FROM “Users”;

Я добавил новую схему (и удалил там свою таблицу пользователей) в базе данных, поэтому мой запрос был

SELECT “role” FROM “user” …

Но теперь должно быть с именем схемы

SELECT “role” FROM “schemaName”.”user” …

В случае автоматического тестирования установка задержки после выполнения миграции выполняет свою работу:

setTimeout(() => {

  // queries

}, 1000);

Возможно, это задержка для базы данных, которая должна быть выполнена.

В моем случае автоматический тест является многопоточным.

PG undefinedtable error relation users does not exist

Я видел этот вопрос раньше, но только для rspec. Я еще не создал test, потому что он слишком сложный для меня, но однажды я это сделаю! 😛

Я получаю эту ошибку, когда пытаюсь зарегистрироваться / войти в свое приложение. Я использовал devise для создания пользователя, а также omniauth2 для входа в Google.

это ошибка

ActiveRecord::StatementInvalid at /users/auth/google_oauth2/callback

PG::UndefinedTable: ERROR: relation “users” does not exist

LINE 5: WHERE a.attrelid = ‘”users”‘::regclass

  ^

: SELECT a.attname, format_type(a.atttypid, a.atttypmod),

  pg_get_expr(d.adbin, d.adrelid), a.attnotnull, a.atttypid, a.atttypmod

  FROM pg_attribute a LEFT JOIN pg_attrdef d

  ON a.attrelid = d.adrelid AND a.attnum = d.adnum

  WHERE a.attrelid = ‘”users”‘::regclass

  AND a.attnum > 0 AND NOT a.attisdropped

  ORDER BY a.attnum

Я пробовал rake db:migrate, но она уже создана: в таблице schema пользователи существуют. Кто-нибудь получал эту ошибку раньше?

Ответ

Я столкнулся с этой ошибкой, и после моего исследования выяснилось, что одна из причин, по которой ошибка PG undefinedtable, связанная с пользователями, не существует ошибка:

Эта ошибка является ошибкой миграции. Возможно, вы создали новую модель с некоторыми атрибутами базы данных. После создания модели вам необходимо перенести атрибуты в схему вашего приложения rails.

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

rake db:migrate

Если вы используете heroku

heroku run rake db:migrate

Наталья Петрова
Оцените автора
Новости города Салавата
Добавить комментарий

Adblock
detector