我已经使用MongoDB将一些站点部署到了Heroku,但这是我第一次使用SQL创建站点并尝试部署到Azure,因此我很可能缺少明显的东西。
我一直在使用Node.js,SQL Server数据库和Sequelize作为ORM在我的开发机器上开发一个网站。一切正常,但是当我尝试使用连接字符串部署到Azure时,无法连接SQL Azure数据库。我可以使用SQL Server Management Studio与Azure上的空数据库进行连接,因此我确定连接信息正确。
当我尝试部署到Azure时,尝试使用Azure提供的连接字符串:
var Sql = require('sequelize');
var sql = new Sql('Driver={SQL Server Native Client 11.0};Server=tcp:server.database.windows.net,1433;Database=databasename;Uid=UserName@server;Pwd={password};Encrypt=yes;TrustServerCertificate=no;Connection Timeout=30;');
当我尝试使用此字符串连接时,出现的错误是:
C:\Users\username\Documents\GitHub\event-site\node_modules\sequelize\lib\sequelize.js:110
options.dialect = urlParts.protocol.replace(/:$/, '');
^
TypeError: Cannot read property 'replace' of null
at new Sequelize (C:\Users\v-mibowe\Documents\GitHub\event-site\node_modules\sequelize\lib\sequelize.js:110:40)
at Object.<anonymous> (C:\Users\v-mibowe\Documents\GitHub\event-site\routes\db-routes.js:68:11)
at Module._compile (module.js:435:26)
at Object.Module._extensions..js (module.js:442:10)
at Module.load (module.js:356:32)
at Function.Module._load (module.js:311:12)
at Module.require (module.js:366:17)
at require (module.js:385:17)
at Object.<anonymous> (C:\Users\v-mibowe\Documents\GitHub\event-site\server.js:16:1)
at Module._compile (module.js:435:26)
at Object.Module._extensions..js (module.js:442:10)
at Module.load (module.js:356:32)
at Function.Module._load (module.js:311:12)
at Function.Module.runMain (module.js:467:10)
at startup (node.js:136:18)
at node.js:963:3
db-routes.js:68:11
是数据库的连接字符串。
当我尝试使用以下配置我的连接时,服务器不再崩溃或出现错误,但是没有创建应由架构中的代码创建的内容。该代码如下所示:
var Sql = require('sequelize');
var sql = new Sql('dbname', 'UserName@server', 'password', {
host: 'server.database.windows.net',
dialect: 'mssql',
driver: 'tedious',
options: {
encrypt: true,
database: 'dbname'
},
port: 1433,
pool: {
max: 5,
min: 0,
idle: 10000
}
});
我与本地主机的原始连接(工作正常)如下所示:
var Sql = require('sequelize');
var sql = new Sql('dbname', 'username', 'password', {
host: 'localhost',
dialect: 'mssql',
pool: {
max: 5,
min: 0,
idle: 10000
}
})
在此先感谢您提供的所有帮助!
要繁琐地连接到Azure Sql服务器,我们需要设置其他选项:encrypt: true
在连接工厂中。在Sequelize中,我们可以在初始化函数中指定DialectOption:
var Sequelize = require('sequelize');
var sequelize = new Sequelize('dbname', 'username', 'passwd', {
host: 'hostname',
dialect: 'mssql',
pool: {
max: 5,
min: 0,
idle: 10000
},
dialectOptions: {
encrypt: true
}
});
您可以在GitHub上Sequelize的问题回购中引用类似的问题
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句