Oracle中新建schema即创建同名用户,无CREATE SCHEMA语句;PostgreSQL支持CREATE SCHEMA命令;MySQL中database等价于schema,仅需CREATE DATABASE。

Oracle 和 PostgreSQL 需要显式创建 schema,MySQL 则不支持独立 schema 概念(database ≈ schema);DBeaver 里新建 schema 的操作取决于你连的是哪种数据库。
Oracle 中新建 schema 实际是新建用户
Oracle 没有独立的 CREATE SCHEMA 语句,schema 名字就是用户名。在 DBeaver 中不能直接“新建 schema”,而是通过建用户间接实现:
- 右键连接 → “新建” → “用户”
- 填入用户名(即未来 schema 名),设置密码、默认表空间等
- 必须赋予
CREATE SESSION和CREATE TABLE等权限,否则该用户/schema 无法登录或建表 - 建完后,在左侧导航树中刷新,就能看到以该用户名命名的 schema 节点
注意:如果你用的是 Oracle 12c 及以上且启用了 PDB,还要确认当前连接的是正确的可插拔数据库(PDB),否则新建用户可能落在 CDB$ROOT 里,对业务库不可见。
PostgreSQL 中直接执行 CREATE SCHEMA
PostgreSQL 支持原生 CREATE SCHEMA,DBeaver 里最稳妥的方式是手写 SQL:
- 打开 SQL 编辑器(快捷键 Ctrl+Enter 或点击上方“SQL 编辑器”图标)
- 输入:
CREATE SCHEMA IF NOT EXISTS my_schema AUTHORIZATION my_user; - 选中语句 → 点击绿色三角形“执行”
常见错误:
-
permission denied for database xxx:当前连接用户没有CREATE权限,需用 superuser(如 postgres)执行 - 执行后左侧没刷新:手动右键数据库节点 → “刷新”
- 想让新 schema 成为默认搜索路径:执行
SET search_path TO my_schema, public;(会话级)或修改用户配置ALTER USER my_user SET search_path TO my_schema, public;
MySQL 不需要也不支持单独建 schema
MySQL 的 database 就是 schema 的等价概念,DBeaver 中“新建数据库”就等于新建 schema:
- 右键连接 → “新建” → “数据库”
- 输入名称(如
my_app_db),字符集建议选utf8mb4 - 点击“完成”,它立刻出现在左侧导航树中,可直接展开建表
别被“schema”术语绕晕:MySQL 官方文档里也常把 database 称作 schema,但语法上只有 CREATE DATABASE,没有 CREATE SCHEMA(尽管二者在 MySQL 中互为同义词,实际建的是同一个东西)。
DBeaver 里看不到 schema 节点?检查驱动和连接配置
即使数据库支持 schema,DBeaver 默认也可能隐藏 schema 层级显示:
- 右键连接 → “编辑连接” → “初始化” 标签页 → 勾选 “Show system objects” 和 “Show utility objects”(部分驱动需要)
- 某些 JDBC 驱动版本较旧(如 Oracle ojdbc8 以下)可能不正确上报 schema 列表,建议升级到对应数据库最新官方驱动
- PostgreSQL 连接时,如果 URL 里带了
currentSchema=xxx,DBeaver 可能只展开该 schema,去掉参数再试
真正容易被忽略的点是:schema 创建成功 ≠ 自动成为当前上下文。后续建表前,务必确认你正在操作的目标 schema 是激活状态——要么在 SQL 里显式写 my_schema.my_table,要么在 DBeaver 表格建模界面顶部下拉框里手动选对 schema。










