我有一个非常简单的程序,我在其中创建一个Sequelize实例,然后我在mysql数据库上执行原始查询.这种情况是,当MySql启动并运行时没有问题,我可以毫无问题地执行查询.但是当MySql没有运行时,查询在查询超时达到之前不会发出任何错误,然后它会导致ETIMEOUT错误.但那并不是真正发生的事情.我希望查询发出ENOTFOUND错误或类似的东西,如果mysql没有运行,所以我可以管理错误并执行不同的操作,如果Mysql已关闭或Mysql非常繁忙,并具有非常大的响应时间.我应该怎么做才能检查Mysql是否已启动并运行而无需等待超时异常.
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);
});
Run Code Online (Sandbox Code Playgroud) 我正在使用 typescript、express 和Sequelize.
这是我的database连接类。
export class Database {
private _sequelize: Sequelize;
private config: DBConfigGroup = dbConfig;
private env = process.env.NODE_ENV as string;
constructor() {
this._sequelize = new Sequelize({
dialect: 'postgres',
database: this.config[this.env].database,
username: this.config[this.env].username,
password: this.config[this.env].password,
host: this.config[this.env].host,
});
}
async connect(): Promise<void> {
try {
console.log('start connect');
await this._sequelize.authenticate();
console.log('Connection has been established successfully.'.green.bold);
} catch (error) {
console.error('Unable to connect to the database:'.red.bold, error);
}
}
async close(): Promise<void> {
try {
await this._sequelize.close(); …Run Code Online (Sandbox Code Playgroud) node.js sequelize.js google-cloud-sql google-cloud-platform docker-compose