【问题标题】:Role-Based Access Control - RBAC YII V1 ORACLE基于角色的访问控制 - RBAC YII V1 ORACLE
【发布时间】:2015-02-16 15:01:15
【问题描述】:

我正在使用 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 语句是:SELECT * 来自“AUTHITEM” WHERE NAME=:NAME

桌子已经摆好了 我该如何解决这个问题? 有什么想法吗?

先谢谢了!

【问题讨论】:

标签: php oracle yii pdo authorization


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

    由于 Ali 提供了错误修复的链接,您会得到 Oracle NULL,它不能转换为 php NULL

    pdo_oci 在从 lob 字段中获取时不会将 oracle 空值转换为 php 空值。

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

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

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

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

    【讨论】:

      猜你喜欢
      • 2014-12-26
      • 2013-05-08
      • 2011-03-18
      • 2017-02-06
      • 2014-01-25
      • 2016-10-08
      • 2012-02-09
      • 2014-12-21
      • 1970-01-01
      相关资源
      最近更新 更多