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