繁体   English   中英

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

[英]Role-Based Access Control - RBAC YII V1 ORACLE

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

CDbCommand的状态SQL:SQLSTATE [HY000]:常规错误:1405 OCIStmtFetch:ORA-01405:获取的列值为NULL(/tmp/pdo/PDO_OCI-1.0/oci_statement.c:446)。 执行的SQL语句为:SELECT * FROM“ AUTHITEM” WHERE NAME =:NAME

桌子已经摆好了,我该如何解决呢? 有任何想法吗?

提前致谢!

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

从lob字段获取时,pdo_oci不会将oracle null转换为php null。

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

SELECT * FROM WHERE NAME IS NULL或NAME =''

另一个选择是使用AR findBySQL()方法并在其中使用NVL() Oracle函数来获取数据。

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

那是pdo_oci驱动程序的问题,您可以使用此扩展Yii的PHPPDO扩展来避免此错误。 将其解压缩到protected / extensions下,然后在protected / config / main.php中向数据库连接添加以下内容:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM