Posgresql创建表使用information_schema

时间:2018-06-06 16:55:06

标签: database postgresql

我正面临这个问题,我创建了一个包含除public之外的多个模式的数据库。当我使用postgres用户角色连接时(使用pgAdmin,如果我执行create table语句,则不会创建表,但是如果我浏览了info_schema.tables,那么该表被列为table_schema = information_schema,即使在create语句中我使用它限定了表在那之后,如果我创建了另一个引用第一个表的表,或者只是从该表中选择,那么postgres会抱怨该关系不会出现问题。然后我不得不放弃表继续进行。 如果我连接另一个具有超级用户属性集的用户角色,则该表在公共模式中创建。 是否有我必须设置的数据库属性或我必须做的其他事情以避免上述问题?

2 个答案:

答案 0 :(得分:-1)

可能是您输入

set search_path = information_schema;

在information_schema中进行一些查询。但是当您创建表时,它是在information_schema中创建的。那是因为set search_path中的第一个模式名称是创建对象的默认名称。

答案 1 :(得分:-1)

请尝试创建提及模式名称的表,如(create table schemaname.tablename(...))可能会解决您的问题。