I have a very simple program in where I create a Sequelize instance and then I perform a raw query on a mysql database. The case is that when MySql is up and running there is no problem, I can perform the query with no problems. But when MySql is not running then the query doesn't emmit any error until the query timeout has reached and then it emmits a ETIMEOUT error. But that's not really what's happening. I expect the query to emit ENOTFOUND error or something like that if mysql is not running so I can manage the error and perform different actions if Mysql has gone down or Mysql is very busy and has a very large response time. What shoul'd I do to check if Mysql is up and running without having to wait the timeout exception.
sequelize = new Sequelize(db_name, db_user, db_pass, opts); sequelize.query('SELECT * FROM some_table').success(function(result) { console.log(result); }).error(function(err) { console.log(err); });
To connect to a database, you need to open a connection stream between Sequelize and the running MySQL Daemon. So, create a directory named config in the application root, and create a file named database. js inside the config directory.
Configuring the Connection Pool Size in Sequelize Whenever your application connects to a database, it actually forks a new process to fulfill the request. As stated in the official documentation, Sequelize sets up a connection pool on initialization that can be configured through the constructor's options parameter.
As of latest version of Sequelize (i.e. 3.3.2
), authenticate
can be used to check the connection:
var sequelize = new Sequelize("db", "user", "pass"); sequelize.authenticate().then(function(errors) { console.log(errors) });
authenticate
simply runs SELECT 1+1 AS result
query to check the db connection.
UPDATE:
Errors by the newest API need to be handled in catch
:
sequelize .authenticate() .then(() => { console.log('Connection has been established successfully.'); }) .catch(err => { console.error('Unable to connect to the database:', err); });
UPDATE 2:
I haven't tested this, but its only logical that the same thing can be reached with async/await
:
try { await sequelize.authenticate() } catch (err) { console.error('Unable to connect to the database:', err) }
You won't see errors, like password authentication errors, in .then
.
From the sequelize documentation here:
You can use the .authenticate() function like this to test the connection.
sequelize .authenticate() .then(function(err) { console.log('Connection has been established successfully.'); }) .catch(function (err) { console.log('Unable to connect to the database:', err); });
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With