Обновление Java JDBC Oracle 9i до 10g проблем
Мы только что обновили oracle 9i до 10g и запрос к базе данных у меня работает с клиентом 9i, но не с 10g. Ничего в запросе не изменилось. Я получаю следующую ошибку:
java.sql.SQLException: ORA-01036: illegal variable name/number
Не совсем уверен, что происходит. Почему бы это больше не бежать? Это просто оператор выбора, который объединяет около 3 или 4 таблиц. Я удостоверяюсь, что я передаю переменную, используя setInt (это число, которое я использую). При различении объединяемых таблиц единственное, что я нахожу разным, состоит в том, что в одной таблице столбец, к которому я присоединяюсь, устанавливается как число в одной таблице и число (12) в другой. Это имеет значение? Запрос по-прежнему выполняется в TOAD и SQL Navigator...
2 ответа
Проблема заключалась в следующем вызове метода для подготовленного оператора:
ps.setEscapeProcessing(false);
Убрал то и теперь работает нормально. Не думайте, что это совместимо с драйвером oracle 10g. Спасибо всем за помощь.
На ум приходят 2 мысли:
- убедитесь, что вы используете правильную версию драйвера jdbc. Поскольку вы сказали, что запрос работает в TOAD и т. Д., Это, вероятно, будет вашей проблемой.
- убедитесь, что вы не используете ключевые слова ORACLE в своем запросе в качестве псевдонимов столбцов и т. д.
Кроме того, из опыта, если ваша база данных большая / занятая, у вас есть верный путь, прежде чем ваша среда 10g станет стабильной. Мои рекомендации:
- узнать как можно больше о статистике
- Прочитайте руководства по выживанию (есть много в сети)
- следить за встроенными заданиями, которые пересчитывают статус. Нас забили через 12 дней после начала работы, потому что изменения в статистике снизили производительность ключевых запросов. Наше тестирование не позволило провести 12-дневный тест на стабильность.
- знать о привязке к переменной, если вы еще этого не сделали