[英]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.