Node.js 使用sequelize postgres时出现语法错误
我有一个应用程序正在使用以下配置:Node.js 使用sequelize postgres时出现语法错误,node.js,postgresql,sequelize.js,Node.js,Postgresql,Sequelize.js,我有一个应用程序正在使用以下配置: sequelize: 1.7.0 pg: 2.11.1 posgreSql: 9.3 (pg server on my pc) 它与sequelize和mysql方言一起工作。 当我将其更改为: db: 'mysql://user:pass@localhost/dbname' 然后转到postgres并尝试sequelize.sync()我收到以下错误: db: 'postgres://user:pass@localhost/dbname' { “消息”
sequelize: 1.7.0
pg: 2.11.1
posgreSql: 9.3 (pg server on my pc)
它与sequelize
和mysql
方言一起工作。
当我将其更改为:
db: 'mysql://user:pass@localhost/dbname'
然后转到postgres
并尝试sequelize.sync()
我收到以下错误:
db: 'postgres://user:pass@localhost/dbname'
{
“消息”:“在\处或附近出现语法错误”(\”,
“名称”:“错误”,
“stack”:“error:syntax error at or near\”(\”\n at Connection.parseE(/Users/me/Desktop/node/modules/pg/lib/Connection.js:561:11)\n at Connection.parseMessage(/Users/me/Desktop/node/node/node/modules/pg/lib/Connection.js:390:17)\n at[object object object object]\n位于EventEmitter.emit(events.js:95:17)\n位于Socket。(\u stream\u readable.js:746:14)\n位于EventEmitter.emit(events.js:92:17)\n位于Emitter readable(\u stream\u readable.js:408:10)\n位于Emitter readable(\u stream\u readable.js:404:5)\n--------------------------------------------\n在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在exec(/Users/me/Desktop/node/myapp/node_modules/sequelize/lib/query chainer.js:92:14)\n在onError(/Users/me/Desktop/node/myapp/node_modules/sequelize/lib/query chainer.js:72:11)\n在EventEmitter.emit(events.js:95:17)\n在module.exports.CustomEventEmitter.emit(/Users/me/Desktop/node/myapp/node_modules/sequelize/lib/emitters/custom-event-emitter.js:61:33)\n在[对象对象]处。(/Users/me/Desktop/node/myapp/node_modules/sequelize/lib/emitters/custom event emitter.js:131:17)\n--------------------------------------------------------\n在module.exports.CustomEventEmitter.failure.CustomEventEmitter.fail.CustomEventEmitter.error(/Users/me/Desktop/node/myapp/node_modules/sequelize/lib/emitters/custom event emitter/custom\n在exec(/Users/me/Desktop/node/myapp/node_modules/sequelize/lib/query chainer.js:92:14)\n在onError(/Users/me/Desktop/node/node_modules/sequelize/lib/query chainer.js:72:11)\n在EventEmitter.emit(events.js:95:17)\n在module.exports.CustomEventEmitter.emitter.emit(/Users/me/Desktop/node/myapp/node_modules/sequelize/lib/emitters/custom event emitter.js:61:33)\n位于[object object]。(/Users/me/Desktop/node/myapp/node_modules/sequelize/lib/emitters/custom event emitter.js:131:17)”,
“代码”:“42601”
},
“msg”:“未捕获异常”,
“时间”:“2014-03-31T14:17:29.496Z”,
“v”:0
}
我做错了什么
在我在pg中创建dbname
数据库之前,有一个错误缺少数据库
,所以我猜sequelize连接到pg,但它在pgsql代码中生成了一些语法错误
问题是,在模型模式中,我有Sequelize.INTEGER(11)-postgres不允许将11作为整数的大小传递-这将在Sequelize的2.x.x版本中解决(您可以在Sequelize github repo上找到与此问题对应的问题).Sequelize和postgres对我来说很好。您是否在config.js中正确设置了方言、协议和端口
{
"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
}
抱歉,我忘了写下这一问题已经解决了-问题是在模型模式中我有
Sequelize.INTEGER(11)
-并且postgres不允许将11
作为整数大小传递-这将在Sequelize的2.x.x
版本中解决(您可以在Sequelize github repo上找到与此问题对应的问题)。
{
"development":{
"username":"name",
"password":"pass",
"database":"db",
"dialect":"postgres",
"protocol":"postgres",
"host":"127.0.0.1",
"port":"5432"
},
...