Php 向pgSQL表添加权限时出现问题
根据我在“示例”部分所读的内容,我认为下面的代码应该允许我修改我的表,以便所有当前和未来的表都可以读/写Php 向pgSQL表添加权限时出现问题,php,sql,postgresql,pdo,Php,Sql,Postgresql,Pdo,根据我在“示例”部分所读的内容,我认为下面的代码应该允许我修改我的表,以便所有当前和未来的表都可以读/写 $sql = "ALTER DEFAULT PRIVILEGES IN SCHEMA public GRANT SELECT ON TABLES TO PUBLIC;"; $sth = $pdo->prepare($sql); $sth->execute(); // <-- LINE 14 $sql1 = "ALTER DEFAULT PRIVILEGES IN SCHEM
$sql = "ALTER DEFAULT PRIVILEGES IN SCHEMA public GRANT SELECT ON TABLES TO PUBLIC;";
$sth = $pdo->prepare($sql);
$sth->execute(); // <-- LINE 14
$sql1 = "ALTER DEFAULT PRIVILEGES IN SCHEMA public GRANT ALTER ON TABLES TO PUBLIC;";
$sth1 = $pdo->prepare($sql1);
$sth1->execute();
$sql=“将模式公共中的默认权限更改为将表上的选择授予公共;”;
$sth=$pdo->prepare($sql);
$sth->execute();//准备($sql1);
$sth1->execute();
但我得到了一个错误:
致命错误:未捕获的异常“PDOException”带有消息
'SQLSTATE[42601]:语法错误:7错误:位于或接近的语法错误
“默认”第1行:更改模式公共授权中的默认权限
在TA上选择…^'在里面第14行
我哪里出错了?很可能是在太旧的PostgreSQL上运行查询。ALTER DEFAULT PRIVILEGES是在9.0中添加的。很可能是在太旧的PostgreSQL上运行查询。ALTER DEFAULT PRIVITES是在9.0中添加的。如果您使用的是模拟的prepares,请尝试在不准备语句的情况下执行该语句,在删除该语句时使用
$pdo->exec($sql)
@Denis,我会得到致命错误:对非对象调用成员函数execute()
$thomas:not$stmt->execute()
<代码>$pdo->exec():(我认为depesz的答案是正确的。我只是想知道这可能是pdo的模拟prepare解析器中的一个bug或者类似的东西。)@Denis是的,对不起……误读了。当我第一次尝试$pdo->exec($sql)时,我得到了与第一次相同的错误代码>。谢谢。请始终在问题中包括您的PostgreSQL版本(SELECT version()
)。如果您使用的是模拟的prepares,请尝试在不准备语句的情况下执行该语句,在我删除该语句时使用$pdo->exec($sql)
@Denis,我会得到致命错误:调用成员函数execute()在非对象上
$thomas:not$stmt->execute()
<代码>$pdo->exec()
:(我认为depesz的答案是正确的。我只是想知道这可能是pdo的模拟prepare解析器中的一个bug或者类似的东西。)@Denis是的,对不起……误读了。当我第一次尝试$pdo->exec($sql)时,我得到了与第一次相同的错误代码>。谢谢。请在问题中始终包含您的PostgreSQL版本(SELECT version()
),谢谢。似乎我正在运行PostgreSQL 8.4.13
。看起来我们刚刚升级了。8.4已经很老了——4年了。9.0已经快3年了。我的服务器人员告诉我8.4是cPanel支持的最高版本。我想这意味着如果我安装了更高的版本,我将无法继续使用phpPgAdmin..您可以自己安装phpPgAdmin。如果某些软件(cPanel)不允许您使用更新版本的数据库,那么停止使用此软件(cPanel,而不是Pg)是完全合理的理由。谢谢。似乎我正在运行PostgreSQL 8.4.13
。看起来我们刚刚升级了。8.4已经很老了——4年了。9.0已经快3年了。我的服务器人员告诉我8.4是cPanel支持的最高版本。我想这意味着如果我安装了更高的版本,我将无法继续使用phpPgAdmin..您可以自己安装phpPgAdmin。如果某些软件(cPanel)不允许您使用更新版本的数据库,那么停止使用该软件(cPanel,而不是Pg)是完全合理的理由。