PG

NC Cloud适配PG数据库部分操作报表不存在,但是直接查询表可以查到,表在public schema下

已邀请:

问题验证方法:


执行如下SQL,如为正确适配NC Cloud安装的PG数据库,查询结果参考注释:


查询一:

select count(tablename) from pg_tables where schemaname='public'; ----这行查询结果应为0

查询二:

select count(tablename) from pg_tables where schemaname='建库升库的用户名'; ----这行查询结果至少为500以上


如查询一的结果为500以上,且查询二报错或结果少于500,则说明当前数据库在建库时没有正常创建用户schema。需要参考如下进行修复:


1、停止NC Cloud 环境运行

2、登录数据库,确保登录的是NCC的建库用户,连接的参数连接指定的数据库是创建的NCC数据库。

之后执行如下SQL,创建SCHEMA


CREATE SCHEMA 你的NCC数据库用户名 AUTHORIZATION 你的NCC数据库用户名;


3、执行如下SQL确认public schema下是否存在其他应用的表(如是NC Cloud专属数据库,则可跳过本步)

select tablename from pg_tables where schemaname='public';

如存在其他应用的表,则在后续步骤的sql操作中应剔除这些表的调整。


4、生成表迁移SQL

select 'ALTER TABLE ' || tablename || ' SET SCHEMA 你的NCC数据库用户名' from pg_tables where schemaname='你的NCC数据库用户名';

如为数据库连接工具执行的SQL,则可直接将查询结果复制到执行窗口,批量执行即可。

如为命令行执行的SQL,可以在SQL后增加重定向,生成脚本文件,例如

\o  output.sql;---查询结果将输出到

output.sql

select 'ALTER TABLE ' || tablename || ' SET SCHEMA 你的NCC数据库用户名' from pg_tables where schemaname='你的NCC数据库用户名';

将output.sql中生成的SQL,引入执行,例如脚本位于/tmp/output.sql

psql "host=数据库IP port=端口 user=用户名 password=密码 dbname=数据库名" -f "

/tmp/output.sql  "

5、执行完成后进行上文的“查询一”“查询二”进行验证,如数据显示正常,则启动环境即可。




要回复问题请先登录注册