JAVA技术交流QQ群:170933152

1.出现这个错误

2、错误原因

在PostgreSQL数据库中,创建数据库表时,弹出上述错误提示框

3、解决办法

利用SQL语句创建表

create table t_student(

id int,

name varchar(12)

);

具体原因分析:

PostgreSQL 9.5以前的版本,pg_authid有个字段rolcatupdate,用来标记用户是否有更新catalog的权限。 如果rolcatupdate=false,即使是超级用户也不能更新catalog。
但是在9.5以后,这个字段被删掉了,如下commit:
http://git.postgresql.org/gitweb/?p=postgresql.git;a=commit;h=bb8582abf3c4db18b508627a52effd43672f9410

Remove rolcatupdateThis role attribute is an ancient PostgreSQL feature, but could only be
set by directly updating the system catalogs, and it doesn't have any
clearly defined use.Author: Adam Brightwell <adam.brightwell@crunchydatasolutions.com>

因此你在9.5的版本看不到pg_authid的字段rolcatupdate了。
然而EDB有个用来增量同步Oracle, PostgreSQL数据的工具xDB,这个工具需要用到这个权限,更新pg_class.relhastriggers字段来禁用触发器。
例子:

digoal=# create table tab(id int);
CREATE TABLE
digoal=# create or replace function tg() returns trigger as $$
digoal$# declare
digoal$# begin
digoal$#   raise notice 'trigged';
digoal$#   return null;
digoal$# end;
digoal$# $$ language plpgsql strict;
CREATE FUNCTION
digoal=# create trigger tg after insert on tab for each row execute procedure tg();
CREATE TRIGGER
digoal=# insert into tab values (1);
NOTICE:  trigged
INSERT 0 1

更新pg_class.relhastriggers = false,就看不到这个触发器了。

digoal=# update pg_class set relhastriggers =false where relname='tab';
UPDATE 1
digoal=# insert into tab values (1);
INSERT 0 1
digoal=# insert into tab values (2);
INSERT 0 1
digoal=# insert into tab values (3);
INSERT 0 1
digoal=# \d+ tabTable "public.tab"Column |  Type   | Modifiers | Storage | Stats target | Description
--------+---------+-----------+---------+--------------+-------------id     | integer |           | plain   |              | digoal=# update pg_class set relhastriggers =true where relname='tab';
UPDATE 1
digoal=# \d+ tabTable "public.tab"Column |  Type   | Modifiers | Storage | Stats target | Description
--------+---------+-----------+---------+--------------+-------------id     | integer |           | plain   |              |
Triggers:tg AFTER INSERT ON tab FOR EACH ROW EXECUTE PROCEDURE tg()

使用这种语法也可禁用触发器

digoal=# alter table tab disable trigger tg;
ALTER TABLE
digoal=# \d+ tabTable "public.tab"Column |  Type   | Modifiers | Storage | Stats target | Description
--------+---------+-----------+---------+--------------+-------------id     | integer |           | plain   |              |
Disabled user triggers:tg AFTER INSERT ON tab FOR EACH ROW EXECUTE PROCEDURE tg()

这种方法禁用触发器实际上是改动pg_trigger.tgenabled

digoal=# \d pg_triggerTable "pg_catalog.pg_trigger"Column     |     Type     | Modifiers
----------------+--------------+-----------tgrelid        | oid          | not nulltgname         | name         | not nulltgfoid         | oid          | not nulltgtype         | smallint     | not nulltgenabled      | "char"       | not nulltgisinternal   | boolean      | not nulltgconstrrelid  | oid          | not nulltgconstrindid  | oid          | not nulltgconstraint   | oid          | not nulltgdeferrable   | boolean      | not nulltginitdeferred | boolean      | not nulltgnargs        | smallint     | not nulltgattr         | int2vector   | not nulltgargs         | bytea        | not nulltgqual         | pg_node_tree |
Indexes:"pg_trigger_oid_index" UNIQUE, btree (oid)"pg_trigger_tgrelid_tgname_index" UNIQUE, btree (tgrelid, tgname)"pg_trigger_tgconstraint_index" btree (tgconstraint)digoal=# insert into tab values (2);
INSERT 0 1
digoal=# alter table tab enable trigger tg;
ALTER TABLE
digoal=# insert into tab values (2);
NOTICE:  trigged
INSERT 0 1

赋予普通用户alter table enable|disable trigger的权限

digoal=# grant trigger on table tab to digoal;
GRANT
digoal=# \c digoal digoal
digoal=# alter table tab disable trigger tg;
ALTER TABLE

PostGreSql学习笔记002---Navicat Premium中管理PostGreSql 错误:字段rolcatupdate 不存在相关推荐

  1. mysql工具navicat用户授权_Navicat使用教程:在Navicat Premium中管理MySQL用户 - 第4部分:权限管理器工具...

    Navicat Premium 在线订购享专属优惠  立即购买>>> 第4部分:Privilege Manager(权限管理器)工具 在本系列教程中,我们一直在探索如何使用Navic ...

  2. mysql 查看用户权限_在Navicat Premium中管理MySQL用户 - 第4部分:权限管理器工具

    更多资源请查看:[Navicat使用教程2019.1] | [Navicat Data Modeler使用教程] 第4部分:Privilege Manager(权限管理器)工具 在本系列教程中,我们一 ...

  3. mysql设置用户永不过期_在Navicat Premium中管理MySQL用户 - 第2部分:创建新用户

    第2部分:创建新用户 在第1部分中,我们学习了如何使用Navicat Premium用户管理工具保护MySQL root帐户.本篇文章将讨论设置新用户的帐户详细信息,帐户限制和SSL设置. The G ...

  4. navicat新建mysql用户_Navicat使用教程:在Navicat Premium中管理MySQL用户 - 第2部分:创建新用户...

    第2部分:创建新用户 在第1部分中,我们学习了如何使用Navicat Premium用户管理工具保护MySQL root帐户.本篇文章将讨论设置新用户的帐户详细信息,帐户限制和SSL设置. The G ...

  5. navicat创建mysql用户_在 Navicat Premium 中管理 MySQL 用户-第 2 部分:创建新用户

    2018 年 6 月 5 日,由 Robert Gravelle 撰写 第 2 部分:创建新用户 第 2 部分:创建新用户第 1 部分中,我们学习了如何使用 Navicat Premium 用户管理工 ...

  6. postgresql学习笔记(三)连接管理

    使用以下三个SQL语句来取消正在运行的查询并终止连接 (1)查出活动连接列表及其进程ID 1 select * from pg_stat_activity; (2)取消连接上的活动查询 1 selec ...

  7. PostgreSQL学习笔记(更新ing)+c# 使用ef连接数据库postgreSQL

    目录 PostgreSQL学习笔记 一.PostgreSQL创建.删除数据库(表).架构 1.创建数据库 CREATE DATABASE 2.查看数据库 3.删除数据库 4.创建表 5.删除表 6.架 ...

  8. Windows进程与线程学习笔记(七)—— 时间片管理

    Windows进程与线程学习笔记(七)-- 时间片管理 要点回顾 基本概念 CPU时间片 分析 KeUpdateRunTime 分析 KiDispatchInterrupt 备用线程 总结 要点回顾 ...

  9. JDBC学习笔记03【JDBC事务管理、数据库连接池、JDBCTemplate】

    黑马程序员-JDBC文档(腾讯微云)JDBC笔记.pdf:https://share.weiyun.com/Kxy7LmRm JDBC学习笔记01[JDBC快速入门.JDBC各个类详解.JDBC之CR ...

最新文章

  1. 如何将简单CMS后台管理系统示例转换为Java、Php等不同后台语言的版本
  2. 用Windows系统实现RAID功能
  3. Cookie简介及JSP处理Cookie的方法(转)
  4. 千家BBS系列-技术宝典(免费下载软件)
  5. php谈谈你对分布式的理解,简谈关于对分布式处理的理解
  6. 【数据结构与算法】之深入解析“24点游戏”的求解思路与算法示例
  7. RadioWar_RFID_LiveCD_Alpha330
  8. JavaScript RegExp(正则表达式) 对象
  9. zabbix-通过自动注册自动添加主机
  10. python学习笔记16--javascript总结
  11. 【全源码及文档】基于JAVA的干部档案管理系统
  12. 解决Windows10下java环境变量配置不生效的问题
  13. uni-app 超详细教程(二)(从菜鸟到大佬)
  14. 使用记账软件,记录每笔消费和收入操作简单
  15. RTL8367RB -CG
  16. win10无法装载iso文件_Windows 10更新后无法装载iso虚拟光盘
  17. 详解UniSwap、无聊猿、PlatoFarm空投的逻辑
  18. 如何将nc文件转化为txt格式
  19. 解密双十一、618电商大促数据大屏指标实现原理
  20. 将数字上调至8的倍数

热门文章

  1. Vue.js - Day4
  2. CCFA中国国际零售创新大会,观远数据用智能分析驱动零售决策
  3. 微信小程序框架探究和解析
  4. DI、IOC基础学习笔记
  5. 理解saltstack 里cmd.run 配合onlyif和unless使用
  6. 90期:我在系统设计上犯过的14个错
  7. javaWeb校园宿舍管理解析(二)
  8. 计算机能够这样玩—自我学习,自我思维,自我工作(编程)
  9. HDU 4081 Qin Shi Huang's National Road System
  10. hotplug,automount与mdev的调试