2015-09-11 4 views
0
  1. Сначала я создал фабрику сновидений компанией «Bitnami Installer for Windows». Следуя за https://github.com/dreamfactorysoftware/dsp-core/wiki/Install-Microsoft-Windows
  2. Затем я следую за этим add-a-rest-api-to-any-sql-db-in-minutes, чтобы добавить Сервисы в мою удаленную базу данных Postgres.
  3. На вкладке «Документы API» успешно выполняется операция GET/db. (getTables() - список всех имен таблиц).
  4. У меня возникла следующая ошибка при попытке вызвать операцию GET/db/{table_name} (getRecordsByFilter() - Получить одну или несколько записей с помощью фильтра).

Пожалуйста, помогитеDreamfactory: подключение к базе данных для Postgres

[app][ERROR ] CDbCommand::fetchAll() failed: SQLSTATE[42601]: Syntax error: 7 ERROR: syntax error at or near "field_name" 
LINE 1: SELECT k.column_name field_name 
           ^. The SQL statement executed was:  SELECT k.column_name field_name 
      FROM "information_schema"."key_column_usage" k 
      LEFT JOIN "information_schema"."table_constraints" c 
       ON k.table_name = c.table_name 
      AND k.constraint_name = c.constraint_name 
      WHERE c.constraint_type ='PRIMARY KEY' 
       AND k.table_name = :table 
       AND k.table_schema = :schema. 
+0

Просьба предоставить больше контекста. Непонятно, как вы попадаете в такую ​​ситуацию. –

+0

@ihor: содержимое обновляется. – Vince

ответ

0

Пожалуйста, проверьте версию PostgreSQL вы подключаетесь. Оказывается, что упущение ключевого слова as поддерживается с 8.4.

Вот цитата из 8.4 release notes раздел E.23.3.3. Запросы:

Разрешить AS быть необязательным при указании SELECT (или ВОЗВРАТ) столбец выходной метки (Hiroshi Saito)

Это работает так долго, как метка столбца не любое ключевое слово PostgreSQL; иначе AS по-прежнему необходимо.

Поэтому SELECT k.column_name field_name недействителен для 8.3 и ниже, но SELECT k.column_name AS field_name будет работать.

Если PostgreSQL версии является причиной вашей проблемы у вас есть несколько вариантов:

  1. обновить базу данных до 8,4 и выше;
  2. исправьте кодовую базу Dreamfactory, чтобы обойти эту проблему;
  3. поднимите билет в трекер трекера Dreamfactory и подождите, пока он его исправит.
+0

Да. Ты прав. Мы используем версию PostgreSQL 8.3. – Vince

+0

Привет @Ihor, можете ли вы дать мне некоторую информацию о «исправлении Dreamfactory codebase самостоятельно, чтобы обойти эту проблему»; – Vince

+0

@ В начале краткое исследование показало, что проблема заключается в структуре Yii, которая используется Dreamfactory, а не самой Dreamfactory. К сожалению, я не смог найти точное место для исправления. –

Смежные вопросы