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 数据库

为什么使用Sequelize迁移创建表,但模型无法连接到数据库

使用Sequelize

使用Sequelize8

GraphQL/Sequelize:SQL 别名