Я разрабатываю приложение с 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_oci, вы можете избежать этой ошибки, используя это расширение расширения Yii PHPPDO. Извлеките его под защищенные/расширения, а затем в protected/config/main.php добавьте следующие данные в ваше соединение с БД:
db'=>array(
'class'=>'application.extensions.PHPPDO.CPdoDbConnection',
'pdoClass' => 'PHPPDO',
Поскольку Али дал ссылку на исправление ошибки, вы получаете Oracle NULL
который не может быть конвертирован в php NULL
.
pdo_oci не конвертирует нулевые значения oracle в php nulls при извлечении из полей lob.
Итак, я бы рекомендовал сначала выполнить проверку NULL и на основе результата выполнить запрос для ролей:
SELECT * FROM WHERE NAME
NULL ИЛИ NAME
= ''
Другим вариантом является получение данных с использованием метода AR findBySQL()
использующего в нем функцию NVL()
Oracle.
Третий вариант, который, я думаю, заключается в том, чтобы ограничить ваши таблицы db ролями значениями NOT NULL.