Postgresql 如何防止Powerbuilder将表所有者前置到表名(Postgres/PB 10.5)

Postgresql 如何防止Powerbuilder将表所有者前置到表名(Postgres/PB 10.5),postgresql,powerbuilder,Postgresql,Powerbuilder,我正在使用Windows 7上的ODBC从Power Builder 10.5连接到Postgresql数据库。。我注意到PB在表名前面加上了表所有者,例如,如果我以用户身份连接到数据库,它会将查询格式化为SELECT x,y,z FROM user.tablename 这在Sybase中是有意义的,但在postgres中不能正常工作,因为模式和用户是分开的 我通过创建一个与用户同名的postgres模式进行测试,然后将表放在模式中。所以,当PB使用username.tablename时,pos

我正在使用Windows 7上的ODBC从Power Builder 10.5连接到Postgresql数据库。。我注意到PB在表名前面加上了表所有者,例如,如果我以用户身份连接到数据库,它会将查询格式化为SELECT x,y,z FROM user.tablename

这在Sybase中是有意义的,但在postgres中不能正常工作,因为模式和用户是分开的

我通过创建一个与用户同名的postgres模式进行测试,然后将表放在模式中。所以,当PB使用username.tablename时,postgres将其解释为schemaname.tablename,这就起作用了。。但这只是一个测试,不是一个可用的解决方案

它在文档中说,如果表所有者与当前用户相同,PB将不会在所有者前面加上前缀,但如果它们不匹配,则会加上前缀。但在我的测试程序中,我看到的情况正好相反:如果UID与所有者名称相同,则它会加前缀,如果它们不匹配,则不会加前缀

这是我的连接代码:

sqlca.DBMS = "ODBC"
sqlca.userid  = "pblearn"
sqlca.dbpass = "pblearn"
string ls_DSN = "PBLEARN"

string ls_connect = "ConnectString='"
ls_connect += "DSN=" + ls_DSN + ";"
ls_connect += "UID=" + sqlca.userid + ";"
ls_connect += "PWD=" + sqlca.dbpass + "'"

sqlca.dbparm = ls_connect + ", SQLQualifiers=0"
connect;
我的模式是pblearn和public default。。还有两个用户pblearn和pblearn2。如果我连接到pblearn,则会发生前置,并且我会在pblearn中看到表模式的所有者;如果我使用pblearn2,则用户名不会前置,并且我会在public模式中看到表

如何让PB不在用户名前加前缀,或者在不考虑用户的情况下加一致的模式名


谢谢

在安装使用的PBODB105.INI的数据库部分,添加以下属性:

PBTableOwner='NO'
从文件中:

);PBTableOwner='NO'-不限定表名,默认值为'YES'

编辑:

如果不存在特定连接的节,则Powerbuilder 作为符合ODBC的客户端和扩展运行 无法使用可用的。搜索算法 参赛作品包括:

IF section and entry for are present current datasource
THEN use entry value
ELSE IF section corresponding to DBMS_Name Driver_Name exist 
THEN use entry value if it exist 
ELSE IF section corresponding to DBMS_Name exist 
THEN use entry value if it exist 
章节标题

默认情况下,ini文件中没有DataSource_Name,但如果需要覆盖DBMS_驱动程序或DBMS_Name的更一般设置,则应将其放在数据源特定的部分 DBMS_Name Driver_Name Driver_Name去掉了.dll扩展名 DBMS_Name SQLGetInfo调用返回的DBMS名称
因此,为Postgres安装添加节的最简单方法是使用您当前的数据源名称命名一个节,或者如果您更喜欢使用DBMS_名称,请检查此示例:查看ODBC驱动程序返回的DBMS名称。

哪些用户拥有这些模式中的表?在公共模式和pblearn模式中,这些桌子归pblearn所有。我所做的是在两个模式中创建一个名称相同的表,其中包含不同的数据,因此当我在datawindow中检索时,很容易看到它正在访问哪个模式。如果将表所有者放入,然后选中“预览”选项卡,您可以看到连接所需的语法。我不确定这是否对你有用。非常感谢。。在我的PBODB105.INI中没有postgres部分,但应用程序仍然可以工作??。我已经找到了postgres的PBODB条目的好例子,但我不知道如何命名条目以便使用。。或者我需要什么样的配置更改。。。如果你给我一个提示??我知道你的答案几乎肯定是对的,但我会负责,在我接受之前先让它工作。。。谢谢