Я интенсивно искал несколько часов сейчас, и я чувствую, что перепробовал все, но я все еще получаю, что «отношение не существует», как из моего кода в Go, так и из дампавывод базы данных PSQL.
при входе в систему как пользователя postgres по умолчанию:
из \du
, все пользователи присутствуют и говорят, что он владеет правильной базой данных из \dn
все схемы есть
, хотя, когда я меняю пользователя, например,
\c myapp_db myapp_admin
работает \du
, \dn
и т. д., я ничего не получаю
show search_path
также отображается как «myapp», что правильно.все вроде бы правильно, но отношения нет, что дает?
Вот мой файл .sql, который я загрузил вот так:
psql
\i thefile.sql
... runs and everything works granted, created, altered, etc.
\c myapp_db myapp_admin
тогда я запускаю
\dt
и нет Буэно!отношений нет!
Файл SQL, о котором идет речь:
CREATE USER myapp_admin WITH ENCRYPTED PASSWORD 'admin';
CREATE USER myapp_manager WITH ENCRYPTED PASSWORD 'manager';
CREATE USER myapp_user WITH ENCRYPTED PASSWORD 'user';
GRANT myapp_user TO myapp_manager;
GRANT myapp_manager TO myapp_admin;
CREATE DATABASE myapp_db;
REVOKE ALL ON DATABASE myapp_db FROM PUBLIC;
GRANT CONNECT ON DATABASE myapp_db to myapp_user;
CREATE SCHEMA myapp AUTHORIZATION myapp_admin;
SET search_path = myapp;
ALTER ROLE myapp_admin IN DATABASE myapp_db SET search_path = myapp;
ALTER ROLE myapp_manager IN DATABASE myapp_db SET search_path = myapp;
ALTER ROLE myapp_user IN DATABASE myapp_db SET search_path = myapp;
GRANT USAGE ON SCHEMA myapp to myapp_user;
GRANT CREATE ON SCHEMA myapp to myapp_admin;
CREATE TABLE myapp.account (
id bigserial primary key not null,
);
ALTER DEFAULT PRIVILEGES FOR ROLE myapp_admin
GRANT SELECT ON TABLES TO myapp_user; -- only read
ALTER DEFAULT PRIVILEGES FOR ROLE myapp_admin
GRANT INSERT, UPDATE, DELETE, TRUNCATE ON TABLES TO myapp_manager; -- + write, truncate
ALTER DEFAULT PRIVILEGES FOR ROLE myapp_admin
GRANT USAGE, SELECT, UPDATE ON SEQUENCES TO myapp_manager;
Есть идеи, что здесь происходит?Я начинаю думать, что это какая-то ошибка с моей установкой PostgreSQL.