Я пытаюсь подключиться к IDS (v11.50) из django (v1.3.1) с помощью IBM DB2 Data Server Driver (ODBC) (v10.1) и ibm_db (v10.1) https://code.google.com/p/ibm-db/). Простой запрос типа «выберите отчетливый adm_audit.action из adm_audit» от Джанго до передачи водителя в select distinct "adm_audit"."action" from "adm_audit"
и генерировать ошибку:Django, Informix, ibm_db и драйвер сервера данных DB2
[IBM][CLI Driver][IDS/UNIX64] A syntax error has occurred.
Я попытался выполнить ту же инструкцию SQL в db2cli, и она возвращает ту же ошибку:
>select distinct "adm_audit"."action" from "adm_audit"
select distinct "adm_audit"."action" from "adm_audit"
SQLError: rc = 0 (SQL_SUCCESS)
SQLGetDiagRec: SQLState : 42000
fNativeError : -201
szErrorMsg : [IBM][CLI Driver][IDS/UNIX64] A syntax error has occurred.
cbErrorMsg : 58
если котировки будут удалены, оператор завершается успешно:
> select distinct adm_audit.action from adm_audit
select distinct adm_audit.action from adm_audit
FetchAll: Columns: 1
action
...results...
FetchAll: 13 rows fetched.
Ана предложение? Оцените любую помощь.
Проблема решена.
1) DELIMIDENT переменная
2) переход от ibm_db_django -> operation.py около 176 линии, струнный
"name = upper(name)"
к
"name = lower(name)"
(и импорт ` нижний 'от класса струн)
вы в состоянии выполнить такой запрос от Informix инструментов, таких как 'dbaccess'? –
Тот же результат. '201: произошла синтаксическая ошибка.' После 'select different" adm_audit "." Action "from" adm_audit "'. Кажется, это проблема с ibm_db. – TheROX
По умолчанию Informix распознает как '' ', так и' '' кавычки вокруг строк (они должны быть одинаковыми на обоих концах, конечно). Чтобы распознать строку с двойными кавычками в качестве идентификатора с разделителями, вам нужно заставить свою руку с переменной среды DELIMIDENT или эквивалентной настройкой в строке подключения API. Этот параметр не может быть изменен после выполнения сеанса. –