【问题标题】:Sequelize target postgres 8续集目标postgres 8
【发布时间】:2014-11-19 17:58:03
【问题描述】:

我在项目上使用 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 版本,或者我应该使用什么 sequelize 版本?

谢谢

【问题讨论】:

  • 嗯,不知道 pg8 不支持这个:-/ 我想知道在这种情况下你是否可以进行迁移?

标签: sql node.js postgresql sequelize.js


【解决方案1】:

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

IF NOT EXISTS 被添加到表创建中,当您在 sequelize 中执行 sync({ force: false }) 时(或完全忽略 force)。我建议您致电sync({ force: true })这将删除并重新创建表格;或者根本不调用同步,并依赖@sdepold 提到的迁移

【讨论】:

  • 谢谢。将尝试这个并在之后发布。
  • 经过测试,似乎不起作用。语句仍然相同,{ force: true } 的错误也是如此
  • @Gelidus 我遇到了同样的问题,不能将 postgres 升级到 v9。你找到解决这个问题的方法了吗?
  • @SoichiHayashi 不,那天库中没有实现该功能,我真的不确定现在是否。我们将所有系统更新为 Postgres9
猜你喜欢
  • 2020-07-29
  • 2014-12-20
  • 2015-04-29
  • 2021-03-02
  • 2017-07-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-04-13
相关资源
最近更新 更多