为何创建的schema属主为postgres而非me?表查询异常排查
问题解决与脚本修正方案
1. 修正db_schema的属主
- 直接修改现有schema的属主:
ALTER SCHEMA db_schema OWNER TO me; - 后续创建schema时,建议直接指定属主避免重复问题:
CREATE SCHEMA IF NOT EXISTS db_schema AUTHORIZATION me;
2. 让me账号能看到db_schema
给me账号授予schema的使用权限:
GRANT USAGE ON SCHEMA db_schema TO me;
如果需要访问schema内的表,补充授予数据权限:
-- 授予现有表的查询权限 GRANT SELECT ON ALL TABLES IN SCHEMA db_schema TO me; -- 新增表时自动继承权限 ALTER DEFAULT PRIVILEGES IN SCHEMA db_schema GRANT SELECT ON TABLES TO me;
3. 解决找不到db_schema.item的问题
这是脚本里的两处拼写错误导致的:
- 创建thing表时误用了schema名
db_scheme(正确应为db_schema) - 外键引用错误写成
db_schema.item(正确应为db_schema.items)
修正后的核心脚本示例:
-- 创建带属主的schema CREATE SCHEMA IF NOT EXISTS db_schema AUTHORIZATION me; -- 创建items表(原脚本里的item应为items) CREATE TABLE db_schema.items ( id SERIAL PRIMARY KEY, name VARCHAR(50) NOT NULL ); -- 创建thing表,修正schema名和外键 CREATE TABLE db_schema.thing ( id SERIAL PRIMARY KEY, item_id INT REFERENCES db_schema.items(id) );
内容的提问来源于stack exchange,提问作者binary_psychic
相关产品推荐
相关产品推荐

