Я разрабатываю приложение с базой данных 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» ГДЕ ИМЯ =: ИМЯ
столы уже заняты
как я могу это исправить?
есть идеи?
заранее спасибо!
Это проблема с драйвером pdo_oci, вы можете избежать этой ошибки, используя это расширение Yii’s Расширение PHPPDO. Извлечь его под защищенный / расширение тогда в защищенный / конфигурации / main.php добавьте следующие вещи в ваше соединение с БД:
db'=>array(
'class'=>'application.extensions.PHPPDO.CPdoDbConnection',
'pdoClass' => 'PHPPDO',
Как Али дал ссылку на исправление ошибки, вы получите Oracle NULL
который не конвертируется в php NULL
,
pdo_oci не преобразует нулевые значения оракула в нулевые значения php при извлечении из полей lob.
Итак, я бы порекомендовал сначала выполнить проверку NULL и на основании результата сделать запрос на роли:
ВЫБЕРИТЕ * ОТ ГДЕ NAME
НУЛЬ ИЛИ NAME
знак равно
Другим вариантом является выборка данных с использованием AR findBySQL()
метод с использованием в нем NVL()
Функция Oracle.
Третий вариант, который я думаю, — ограничить таблицу db ваших ролей значениями NOT NULL.