Управление доступом на основе ролей - RBAC YII V1 ORACLE

0

Я разрабатываю приложение с yii v1 и оракульной базой данных, когда я хочу использовать RBAC (checkAccess), я получаю следующую ошибку:

CDbCommand falló al ejecutar 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

таблицы уже вверх, как я могу это исправить? есть идеи?

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

Теги:
pdo
yii
authorization

2 ответа

0
Лучший ответ

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

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

Поскольку Али дал ссылку на исправление ошибки, вы получаете Oracle NULL который не может быть конвертирован в php NULL.

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

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

SELECT * FROM WHERE NAME NULL ИЛИ NAME= ''

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

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

Ещё вопросы

Сообщество Overcoder
Наверх
Меню