我正在用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
桌子已经上架了 我怎么解决这个问题? 任何想法?
提前谢谢!
答案 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',