续集目标postgres 8

时间:2014-11-18 08:42:52

标签: sql node.js postgresql sequelize.js

我一直在项目中使用sequelize一段时间。从现在开始,没有在服务器上部署任何内容,我认为它只是“npm install”并运行应用程序。但是我在服务器上遇到了这个奇怪的错误:

{ [SequelizeDatabaseError: error: syntax error at or near "NOT"]
  name: 'SequelizeDatabaseError',
  message: 'error: syntax error at or near "NOT"',
  parent:
   { [error: syntax error at or near "NOT"]
     name: 'error',
     length: 81,
     severity: 'ERROR',
     code: '42601',
     detail: undefined,
     hint: undefined,
     position: '17',
     internalPosition: undefined,
     internalQuery: undefined,
     where: undefined,
     file: 'scan.l',
     line: '911',
     routine: 'base_yyerror',
     sql: 'CREATE TABLE IF NOT EXISTS "adapters" ("id"   SERIAL , "adapter_number" VARCHAR(255), "password" VARCHAR(255), "last_connect" TIMESTAMP WITH TIME ZONE, "adaman_version" INTEGER, "adaap_version" INTEGER, "created_at" TIMESTAMP WITH TIME ZONE NOT NULL, "updated_at" TIMESTAMP WITH TIME ZONE NOT NULL, PRIMARY KEY ("id"));' }

我在问题中发现了这个错误,那里的人说它只需要将postgres升级到9.不幸的是,部署服务器上的所有系统都使用postgres 8并且很快就无法升级。

在sequelize中是否有任何方法可以指定我正在使用的postgres版本,或者我应该使用哪种续集版本?

由于

1 个答案:

答案 0 :(得分:1)

似乎在postgres 8中不支持CREATE IF NOT EXISTS。我搜索了一下,但实现相同的行为似乎非常复杂。

当您在续集中执行IF NOT EXISTS(或完全忽略sync({ force: false }))时,

force会添加到表格创建中。我建议您拨打sync({ force: true }),这将删除并重新创建表格;或者根本不调用同步,并依赖于@sdepold提到的迁移