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