我一直在项目中使用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版本,或者我应该使用哪种续集版本?
由于
答案 0 :(得分:1)
似乎在postgres 8中不支持CREATE IF NOT EXISTS
。我搜索了一下,但实现相同的行为似乎非常复杂。
IF NOT EXISTS
(或完全忽略sync({ force: false })
)时, force
会添加到表格创建中。我建议您拨打sync({ force: true })
,,这将删除并重新创建表格;或者根本不调用同步,并依赖于@sdepold提到的迁移