首页 文章

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

提问于
浏览
0

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

CDb命令fallóalejecutar la sentencia 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

这些表已经了解我如何解决这个问题?有任何想法吗?

提前致谢!

2 回答

  • 0

    那个's a problem with pdo_oci driver, you can avoid this error by using this extensión Yii' s PHPPDO extension . 在 protected/extensions 下提取它然后在 protected/config/main.php 将以下内容添加到您的数据库连接:

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

    由于Ali给出了错误修复的链接,你得到的 Oracle NULL 无法转换为 php NULL .

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

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

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

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

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

相关问题