Ho installato alcuni siti su Heroku con MongoDB, ma questa è la prima volta che ho creato un sito con SQL e ho provato a distribuire ad Azure, quindi probabilmente mi manca qualcosa di ovvio.Impossibile connettersi al database SQL Azure con sequelize, ma SQL Server su localhost funziona bene
Ho sviluppato un sito Web sulla mia macchina di sviluppo utilizzando Node.js, un database SQL Server e Sequelize come ORM. Tutto funziona correttamente, ma quando ho provato a distribuire in Azure con una stringa di connessione non riesco a connettermi con il database SQL Azure. Posso usare SQL Server Management Studio per connettermi con il database vuoto su Azure, quindi sono sicuro che le mie informazioni di connessione siano corrette.
Quando ho cercato di distribuire a Azure, ho provato con la stringa di connessione che Azure fornisce:
var Sql = require('sequelize');
var sql = new Sql('Driver={SQL Server Native Client 11.0};Server=tcp:server.database.windows.net,1433;Database=databasename;[email protected];Pwd={password};Encrypt=yes;TrustServerCertificate=no;Connection Timeout=30;');
Quando provo a connettersi con questa stringa, l'errore che ottengo è:
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
è la stringa di connessione al db.
Quando si tenta di configurare la mia connessione con quanto segue, il server non si blocca più o genera un errore, ma nessuno dei contenuti che dovrebbero essere creati dal codice nello schema viene creato. Quel codice simile a questo:
var Sql = require('sequelize');
var sql = new Sql('dbname', '[email protected]', 'password', {
host: 'server.database.windows.net',
dialect: 'mssql',
driver: 'tedious',
options: {
encrypt: true,
database: 'dbname'
},
port: 1433,
pool: {
max: 5,
min: 0,
idle: 10000
}
});
La mia connessione originale al mio localhost (che funziona bene) si presenta così:
var Sql = require('sequelize');
var sql = new Sql('dbname', 'username', 'password', {
host: 'localhost',
dialect: 'mssql',
pool: {
max: 5,
min: 0,
idle: 10000
}
})
Grazie in anticipo per tutto l'aiuto!
Se ho capito bene, l'applicazione è in esecuzione sul Heroku e il database in Azure, destra? Hai controllato il firewall? –
@BrunoFaria Grazie per avermi contattato. Niente è su Heroku, l'intera App è in esecuzione su Azure. Ho solo menzionato Heroku, perché non mi sono mai distribuito su Azure e potrei provare a fare le cose in un modo "Heroku" quando dovrebbe essere fatto in modo diverso in Azure. – CascadiaJS
Il firewall SQL Azure è selezionato per i servizi di Azure? Altrimenti, devi aggiungere manualmente l'ip del frontend. –