На сервере разработки у нас есть база данных Oracle11g , которая настроена и правильно работает с ColdFusion ORM (ColdFusion 9.0.1) с использованием native Oracle водитель.
Однако в производственной системе драйвер недоступен, поскольку мы используем стандартную версию вместо корпоративной. На этом сервере мы используем драйвер Oracle thin , выбрав «Другой» для типа драйвера на странице конфигурации администратора ColdFusion -> Источники данных. Он правильно подключается к базе данных.
Однако, после этого мы сталкиваемся с этой проблемой всякий раз, когда пытаемся запустить ormReload()
:
Таблица ПРОДУКТЫ, определенные для модели cfc. Продукт не существует в схеме abc.
Однако мы убедились, что с моделью все в порядке и что выполнение cfquery
прекрасно вытягивает данные из таблицы. Кажется, только ORM не находит таблицу.
Странно то, что если мы переименуем таблицу и клонируем ее:
alter table ABC.PRODUCTS rename to PRODUCTS2;
create table ABC.PRODUCTS as select from ABC.PRODUCTS2;
Это как-то заставляет CF ORM правильно читать таблицу, по крайней мере, до тех пор, пока служба CF не будет перезапущена, после чего будет повторяться та же ошибка.
Кто-нибудь знает, почему это происходит, и что мы можем сделать, чтобы это исправить?
Редактировать: Мне удалось найти обходной путь, создав синоним:
create synonym P for PRODUCTS;
И затем настройка постоянного компонента для использования синонима P
вместо таблицы PRODUCTS
, и это, похоже, решает проблему. Тем не менее, это не решает первоначальную проблему. У кого-нибудь есть идеи?