【问题标题】:Syntax error when using sequelize postgres使用 sequelize postgres 时出现语法错误
【发布时间】:2014-04-17 20:26:50
【问题描述】:
sequelize: 1.7.0
pg: 2.11.1
posgreSql: 9.3 (pg server on my pc)

我的应用使用以下配置:

db: 'mysql://user:pass@localhost/dbname'

它适用于sequelizemysql 方言。 当我将其更改为:

db: 'postgres://user:pass@localhost/dbname'

和方言 postgres 并尝试 sequelize.sync() 我收到以下错误:

{
   "message":"syntax error at or near \"(\"",
   "name":"error",
   "stack":"error: syntax error at or near \"(\"\n    at Connection.parseE (/Users/me/Desktop/node/myapp/node_modules/pg/lib/connection.js:561:11)\n    at Connection.parseMessage (/Users/me/Desktop/node/myapp/node_modules/pg/lib/connection.js:390:17)\n    at [object Object].<anonymous> (/Users/me/Desktop/node/myapp/node_modules/pg/lib/connection.js:92:20)\n    at EventEmitter.emit (events.js:95:17)\n    at Socket.<anonymous> (_stream_readable.js:746:14)\n    at EventEmitter.emit (events.js:92:17)\n    at emitReadable_ (_stream_readable.js:408:10)\n    at emitReadable (_stream_readable.js:404:5)\n---------------------------------------------\n    at module.exports.CustomEventEmitter.failure.CustomEventEmitter.fail.CustomEventEmitter.error (/Users/me/Desktop/node/myapp/node_modules/sequelize/lib/emitters/custom-event-emitter.js:93:10)\n    at exec (/Users/me/Desktop/node/myapp/node_modules/sequelize/lib/query-chainer.js:92:14)\n    at onError (/Users/me/Desktop/node/myapp/node_modules/sequelize/lib/query-chainer.js:72:11)\n    at EventEmitter.emit (events.js:95:17)\n    at module.exports.CustomEventEmitter.emit (/Users/me/Desktop/node/myapp/node_modules/sequelize/lib/emitters/custom-event-emitter.js:61:33)\n    at [object Object].<anonymous> (/Users/me/Desktop/node/myapp/node_modules/sequelize/lib/emitters/custom-event-emitter.js:131:17)\n---------------------------------------------\n    at module.exports.CustomEventEmitter.failure.CustomEventEmitter.fail.CustomEventEmitter.error (/Users/me/Desktop/node/myapp/node_modules/sequelize/lib/emitters/custom-event-emitter.js:93:10)\n    at exec (/Users/me/Desktop/node/myapp/node_modules/sequelize/lib/query-chainer.js:92:14)\n    at onError (/Users/me/Desktop/node/myapp/node_modules/sequelize/lib/query-chainer.js:72:11)\n    at EventEmitter.emit (events.js:95:17)\n    at module.exports.CustomEventEmitter.emit (/Users/me/Desktop/node/myapp/node_modules/sequelize/lib/emitters/custom-event-emitter.js:61:33)\n    at [object Object].<anonymous> (/Users/me/Desktop/node/myapp/node_modules/sequelize/lib/emitters/custom-event-emitter.js:131:17)",
   "code":"42601"
},
"msg":"uncaughtException",
"time":"2014-03-31T14:17:29.496Z",
"v":0
}

我做错了什么?

在我在 pg 中创建 dbname 数据库之前,出现了错误 missing database 所以我猜 sequelize 已连接到 pg 但它会在 pgsql 代码中产生一些语法错误??


问题是在模型模式中我有 Sequelize.INTEGER(11) - 而 postgres 不允许将 11 作为 INTEGER 的大小传递 - 这将在 Sequelize 的 2.x.x 版本中解决(您可以找到相应的问题在 sequelize github repo 上解决这个问题)。

【问题讨论】:

    标签: node.js postgresql sequelize.js


    【解决方案1】:

    Sequelize 和 postgres 对我来说效果很好。你有没有像这样在config.js中正确设置方言、协议、端口?

    {
      "development":{
        "username":"name",
        "password":"pass",
        "database":"db",
        "dialect":"postgres",
        "protocol":"postgres",
        "host":"127.0.0.1",
        "port":"5432"
      },
    ...
    

    【讨论】:

    • 对不起,我忘了写这已经解决了 - 问题是在模型模式中我有 Sequelize.INTEGER(11) - 而 postgres 不允许将 11 作为 INTEGER 的大小传递 - 这将是在2.x.x 版本的 Sequelize 中解决(您可以在 sequelize github repo 上找到与此问题对应的问题)。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-04-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-27
    • 1970-01-01
    • 2018-12-31
    相关资源
    最近更新 更多