Управление доступом на основе ролей — 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 *
ОТ «AUTHITEM» ГДЕ ИМЯ =: ИМЯ

столы уже заняты
как я могу это исправить?
есть идеи?

заранее спасибо!

0

Решение

Это проблема с драйвером pdo_oci, вы можете избежать этой ошибки, используя это расширение Yii’s Расширение PHPPDO. Извлечь его под защищенный / расширение тогда в защищенный / конфигурации / main.php добавьте следующие вещи в ваше соединение с БД:

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

Другие решения

Как Али дал ссылку на исправление ошибки, вы получите Oracle NULL который не конвертируется в php NULL,

pdo_oci не преобразует нулевые значения оракула в нулевые значения php при извлечении из полей lob.

Итак, я бы порекомендовал сначала выполнить проверку NULL и на основании результата сделать запрос на роли:

ВЫБЕРИТЕ * ОТ ГДЕ NAME НУЛЬ ИЛИ NAMEзнак равно

Другим вариантом является выборка данных с использованием AR findBySQL() метод с использованием в нем NVL() Функция Oracle.

Третий вариант, который я думаю, — ограничить таблицу db ваших ролей значениями NOT NULL.

0

По вопросам рекламы [email protected]