Dreamfactory:与Postgres的数据库连接

时间:2015-09-11 11:11:04

标签: postgresql

  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 Docs”选项卡上,调用GET / db操作成功。 (getTables() - 列出所有表名)。
  4. 尝试调用GET / db / {table_name}操作时遇到以下错误(getRecordsByFilter() - 使用过滤器检索一个或多个记录。)
  5. 请帮忙

    [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.  
    

1 个答案:

答案 0 :(得分:0)

请检查您要连接的PostgreSQL的版本。事实证明,从8.4开始支持省略as关键字。

以下是8.4 release notes部分 E.23.3.3的引用。查询

  

在指定SELECT(或RETURNING)列时允许AS是可选的   输出标签(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的bug追踪器中提出一张票,然后等他们为你解决。