Oracle SQL Developer连接PostgreSQL后无法增删改记录求助
Oracle SQL Developer 连接 PostgreSQL 后无法执行增删改操作的解决方案
- 权限校验
首先确认连接所用的 PostgreSQL 账号具备目标表的INSERT/UPDATE/DELETE权限,可在 SQL 工作表执行如下语句验证权限:
若权限缺失,使用高权限账号执行授权语句:SELECT table_schema, table_name, privilege_type FROM information_schema.table_privileges WHERE grantee = '你的连接用户名';-- 给已有表授权 GRANT INSERT, UPDATE, DELETE ON ALL TABLES IN SCHEMA 目标schema名 TO 你的连接用户名; -- 给后续新建的表默认授权 ALTER DEFAULT PRIVILEGES IN SCHEMA 目标schema名 GRANT INSERT, UPDATE, DELETE ON TABLES TO 你的连接用户名; - 事务配置检查
Oracle SQL Developer 默认可能关闭自动提交,执行 DML 后需要手动提交才会生效:- 打开「工具」-「首选项」-「数据库」-「高级」,勾选自动提交SQL语句可默认自动提交
- 未开启自动提交时,每次执行 DML 后手动运行
COMMIT;语句即可生效
- JDBC 连接参数优化
在连接配置的自定义 JDBC URL 中添加stringtype=unspecified参数,避免 PostgreSQL 类型校验不通过导致 DML 执行失败,URL 参考格式:jdbc:postgresql://<PG主机地址>:<端口>/<数据库名>?stringtype=unspecified - 可视化编辑限制排查
Oracle SQL Developer 的可视化表格编辑功能(直接点击单元格修改数据)要求目标表必须存在主键或唯一非空约束,如果是无主键表、视图,可视化编辑按钮默认禁用,可手动编写 DML 语句执行,或者给目标表添加主键即可恢复可视化编辑能力。 - 锁冲突排查
执行如下语句查询是否存在阻塞你的 DML 操作的锁:
存在阻塞锁时,释放对应会话或等待锁释放即可恢复 DML 执行能力。SELECT * FROM pg_locks WHERE NOT granted;
内容的提问来源于stack exchange,提问作者daniel8x
相关产品推荐
相关产品推荐

