无法使用sequelize连接到SQL Azure数据库,但localhost上的SQL Server工作正常

时间:2015-12-18 18:11:20

标签: sql-server node.js azure azure-sql-database sequelize.js

我已经使用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是db的连接字符串。

当我尝试使用以下内容配置连接时,服务器不再崩溃或出错,但是不会创建应由架构中的代码创建的内容。该代码如下所示:

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
  }
});

我与localhost的原始连接(工作正常)如下所示:

var Sql = require('sequelize');
var sql = new Sql('dbname', 'username', 'password', {
  host: 'localhost',
  dialect: 'mssql',

  pool: {
    max: 5,
    min: 0,
    idle: 10000
  }
})

提前感谢所有帮助!

0 个答案:

没有答案