database - 关系不存在(golang/mac OS)
问题描述
我已经广泛搜索了几个小时,我觉得我已经尝试了一切,但我仍然从 Go 中的代码以及转储的输出中得到“关系不存在” PSQL 数据库。
以默认 postgres 用户身份登录时:
from \du
,所有用户都在那里,它说它拥有正确的数据库 from \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 安装有一些错误。
解决方案
推荐阅读
- python - 在火花中创建带有窗口的列
- typescript - 为什么我可以将 void 分配给永不返回的函数
- linux - 如何停止我的脚本以覆盖现有文件
- node.js - 向 Spotify 发出多个请求添加到队列端点
- scala - 独立运行 UDF 的 Spark 错误
- node.js - 404 Not Found with ngrok 和 Bot Framework
- expo - 自定义库的输入/自动完成建议未出现在 Expo 项目中
- reactjs - 是否可以触发“集装箱装载”两次或强制 GTM 重新装载?(反应)
- c# - 如何使用 IOT Hub 将消息从云端发送到设备?
- android - 在 React Native 中打开设备手电筒