基于角色的访问控制 - RBAC YII V1 ORACLE


Role-Based Access Control - RBAC YII V1 ORACLE

我正在开发一个带有yii v1和oracle数据库的应用程序,当我想使用RBAC(checkAccess(时,我收到以下错误:

CDbCommand falló al ejecutar la sentencia SQL: SQLSTATE[HY000]: 一般错误: 1405 OCIStmtFetch: ORA-01405: fetched column value is NULL (/tmp/pdo/PDO_OCI-1.0/oci_statement.c:446(。执行的 SQL 语句为:选择 * 来自"AUTHITEM" 其中名称=:名称

表格已经上来了我该如何解决这个问题?有什么想法吗?

提前感谢!

这是pdo_oci驱动程序的问题,你可以通过使用这个扩展 Yii 的 PHPPDO 扩展来避免此错误。在受保护/扩展下提取它,然后在受保护/配置/主下.php将以下内容添加到您的数据库连接中:

db'=>array(
      'class'=>'application.extensions.PHPPDO.CPdoDbConnection',
      'pdoClass' => 'PHPPDO',

由于 Ali 提供了错误修复的链接,因此您将获得不可转换为 php NULLOracle NULL

从 lob 字段获取时,pdo_oci 不会将预言机空值转换为 PHP 空值。

因此,我建议首先进行 NULL 检查,并根据结果对角色进行请求:

NAME 为 NULL 或 NAME ='' 中选择 *

另一种选择是使用 AR findBySQL() 方法获取数据,其中使用 NVL() Oracle 函数。

我认为第三个选项是将您的角色数据库表限制为 NOT NULL 值。