续集语法错误

Sequelize syntax Error

我有一个简单的 Sequelize 设置。

var config = require('../config'),
    Sequelize = require('sequelize'),
    sequelize = new Sequelize(
        config.get('database'),
        config.get('username'),
        config.get('password'), {
            host: config.get('host'),
            port: config.get('dbport'),
            dialect: config.get('dialect'),
            pool: {
                max: 5,
                min: 0,
                idle: 10000
            }
        })

如果我 运行 进行普通检查 sequelize.authenticate() 它工作正常并且表明连接没有问题。但是如果我尝试定义一个简单的模型,sequelize.sync(); 会抛出一个错误:Unhandled rejection SequelizeDatabaseError: syntax error at or near "NOT"。 在我看来,sequelize 或驱动程序中存在问题。 顺便说一句,我使用 PostgreSQL 9.0.13

对于那些将遇到同样问题的人。

如 Alex 创建的 Syntax error on sequelize.define() 问题所述,这与 sequelize 连接到的 PostgreSQL 版本有关:

Postgres 9.0 (and, of course, older) does not support CREATE TABLE IF NOT EXISTS


问题的两种不同解决方案:

  • 升级 PostgreSQL 版本本身(9.4 是最新的稳定版本)
  • 升级sequelize到最新版本(the fix was applied to sequelize 3.15)