2017-08-11 216 views
0

我試圖連接到SQL Server實例,但嘗試連接時正在定義錯誤的端口。Sequelize:無法連接到SQL Server - 正在傳遞不正確的端口

Unable to connect to the database: { SequelizeConnectionRefusedError: connect ECONNREFUSED 127.0.0.1:3306
at Handshake._callback (C:\test\ExpressGeneric\node_modules\sequelize\lib\dialects\mysql\connection-manager.js:80:20)
at Handshake.Sequence.end (C:\test\ExpressGeneric\node_modules\mysql\lib\protocol\sequences\Sequence.js:88:24)
at Protocol.handleNetworkError (C:\test\ExpressGeneric\node_modules\mysql\lib\protocol\Protocol.js:363:14)
at Connection._handleNetworkError (C:\test\ExpressGeneric\node_modules\mysql\lib\Connection.js:428:18) at emitOne (events.js:96:13) at Socket.emit (events.js:188:7) at emitErrorNT (net.js:1277:8) at _combinedTickCallback (internal/process/next_tick.js:80:11) at process._tickCallback (internal/process/next_tick.js:104:9) name: 'SequelizeConnectionRefusedError', message: 'connect 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" 
    } 
} 
+0

您還沒有指定您的配置的端口號。在[NodeJsConnection]中指定配置中指定的端口(https://stackoverflow.com/questions/10309540/connect-to-sql-server-database-from-node-js#31989348) –

回答

0

不知道交易是什麼,但我現在能夠連接。我想知道變量的定位是否是一個問題。

var sequelize = new Sequelize(db,userName,password,{ 
 
    dialect: 'mssql', 
 
    host: hostName, 
 
    port: 1433, 
 
    logging: false, 
 
    dialectOptions: { 
 
     requestTimeout: 30000, 
 
     encrypt: true 
 
    } 
 
    })

0

你有沒有改變的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 
    }, 
}) 

另外請確保您的服務器已啓動並可從您運行應用程序的機器訪問。

+0

我沒有使用MySQL 。我正在使用Microsoft SQL Server。我沒有改變端口,是的,它已打開,我可以遠程連接它,就像我在我的文章中所述。問題是端口3306正在定義其他地方,我不知道爲什麼。我不想使用端口3306,因爲它不是數據庫服務器正在使用的端口。正在使用的端口是1433。 – user3183411