Sequelize:无法连接到 SQL Server - 传递的端口不正确
Posted
技术标签:
【中文标题】Sequelize:无法连接到 SQL Server - 传递的端口不正确【英文标题】:Sequelize : Cannot connect to SQL Server - incorrect port is being passed 【发布时间】:2018-01-20 11:31:45 【问题描述】:我正在尝试连接到 SQL Server 实例,但尝试连接时定义了错误的端口。
无法连接到数据库: SequelizeConnectionRefusedError: connect ECONNREFUSED 127.0.0.1:3306 在 Handshake._callback (C:\test\ExpressGeneric\node_modules\sequelize\lib\dialects\mysql\connection-manager.js:80:20) 在 Handshake.Sequence.end (C:\test\ExpressGeneric\node_modules\mysql\lib\protocol\sequences\Sequence.js:88:24) 在 Protocol.handleNetworkError (C:\test\ExpressGeneric\node_modules\mysql\lib\protocol\Protocol.js:363:14) 在 Connection._handleNetworkError (C:\test\ExpressGeneric\node_modules\mysql\lib\Connection.js:428:18) 在 emitOne (events.js:96:13) 在 Socket.emit (events.js:188:7) 在 emitErrorNT (net.js:1277:8) 在 _combinedTickCallback (内部/进程/next_tick.js:80:11) 在 process._tickCallback (internal/process/next_tick.js:104:9) name: 'SequelizeConnectionRefusedError', 消息:'连接 ECONNREFUSED 127.0.0.1:3306',
我不知道为什么会这样。
这是我的配置设置。我只更改了这篇文章的 pass 和 db,我在连接时使用了正确的凭据。
config.sql =
host: 'sql2012dev',
database: 'db',
user: 'sa',
password: 'pass'
这是我的连接。
const sequelize = new Sequelize(config.sql.database, config.sql.user, config.sql.password,
host: config.sql.host,
dialect: 'mssql',
port: '1433',
driver: 'tedious',
dialectOptions:
instanceName: MSSQLSERVER
,
define:
timestamps: false
,
pool:
max: 5,
min: 0,
idle: 10000
,
)
我可以使用管理工作室远程连接到它。命名管道和 SQL 浏览器已启用。
我还必须运行 npm mysql 才能启动应用程序。
这是我的依赖项以防万一
"dependencies":
"async": "2.1.5",
"body-parser": "1.17.1",
"client-sessions": "0.7.0",
"cookie-parser": "1.4.3",
"crypto": "0.0.3",
"debug": "2.6.2",
"ejs": "2.5.6",
"express": "4.15.2",
"helmet": "3.5.0",
"jquery": "3.1.1",
"moment": "2.17.1",
"morgan": "1.8.1",
"mssql": "^4.0.4",
"nsp": "2.6.3",
"sendgrid": "4.8.0",
"sequelize": "^3.14.1",
"tedious": "^2.0.0"
【问题讨论】:
您没有在配置中指定端口号。按照NodeJsConnection 中指定的方式在配置中指定端口 【参考方案1】:不确定交易是什么,但我现在可以连接。我想知道变量的定位是否有问题。
var sequelize = new Sequelize(db,userName,password,
dialect: 'mssql',
host: hostName,
port: 1433,
logging: false,
dialectOptions:
requestTimeout: 30000,
encrypt: true
)
【讨论】:
【参考方案2】:你是否更改了mysql的默认端口。如果没有,则在您的配置中使用默认端口。
const sequelize = new Sequelize(config.sql.database, config.sql.user, config.sql.password,
host: config.sql.host,
dialect: 'mssql',
port: '3306', //-------------> change port here
driver: 'tedious',
dialectOptions:
instanceName: MSSQLSERVER
,
define:
timestamps: false
,
pool:
max: 5,
min: 0,
idle: 10000
,
)
还要确保您的服务器已启动并可从您运行应用程序的机器访问。
【讨论】:
我没有使用 MySQL。我正在使用 Microsoft SQL Server。正如我在帖子中所说,我没有更改端口,是的,它已打开并且我可以远程连接到它。问题是端口 3306 正在其他地方定义,我不知道为什么。我不想使用端口 3306,因为这不是数据库服务器正在使用的端口。正在使用的端口是 1433。以上是关于Sequelize:无法连接到 SQL Server - 传递的端口不正确的主要内容,如果未能解决你的问题,请参考以下文章
启动新的 Sequelize 后端并且无法连接到 SQLite DB
无法使用 sequelize 从本地节点应用程序连接到 heroku postgresql 数据库