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

时间:2014-12-17 22:39:06

标签: php oracle yii pdo authorization

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

  

CDbCommandfallóalejecutar la sentencia SQL:SQLSTATE [HY000]:一般错误:1405 OCIStmtFetch:ORA-01405:获取的列值为NULL   (/tmp/pdo/PDO_OCI-1.0/oci_statement.c:446)。执行的SQL语句是:SELECT *   来自“AUTHITEM”   名称=:NAME

桌子已经上架了 我怎么解决这个问题? 任何想法?

提前谢谢!

2 个答案:

答案 0 :(得分:0)

由于Ali已提供错误修复的链接,因此您获得的Oracle NULL无法转换为php NULL

  

从lob字段中提取时,pdo_oci不会将oracle nulls转换为php nulls。

所以,我建议先做一次NULL检查,然后根据结果对角色做请求:

SELECT * FROM WHERE NAME是空或NAME =''

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

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

答案 1 :(得分:0)

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

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