mirror of
https://github.com/knex/knex.git
synced 2025-06-26 22:00:25 +00:00
54 lines
1.4 KiB
JavaScript
54 lines
1.4 KiB
JavaScript
// MySQL2 Client
|
|
// -------
|
|
const Client_MySQL = require('../mysql');
|
|
const Transaction = require('./transaction');
|
|
|
|
// Always initialize with the "QueryBuilder" and "QueryCompiler"
|
|
// objects, which extend the base 'lib/query/builder' and
|
|
// 'lib/query/compiler', respectively.
|
|
class Client_MySQL2 extends Client_MySQL {
|
|
transaction() {
|
|
return new Transaction(this, ...arguments);
|
|
}
|
|
|
|
_driver() {
|
|
return require('mysql2');
|
|
}
|
|
|
|
initializeDriver() {
|
|
try {
|
|
this.driver = this._driver();
|
|
} catch (e) {
|
|
let message = `Knex: run\n$ npm install ${this.driverName}`;
|
|
|
|
const nodeMajorVersion = process.version.replace(/^v/, '').split('.')[0];
|
|
if (nodeMajorVersion <= 12) {
|
|
message += `@3.2.0`;
|
|
this.logger.error(
|
|
'Mysql2 version 3.2.0 is the latest version to support Node.js 12 or lower.'
|
|
);
|
|
}
|
|
message += ` --save`;
|
|
this.logger.error(`${message}\n${e.message}\n${e.stack}`);
|
|
throw new Error(`${message}\n${e.message}`);
|
|
}
|
|
}
|
|
|
|
validateConnection(connection) {
|
|
return (
|
|
connection &&
|
|
!connection._fatalError &&
|
|
!connection._protocolError &&
|
|
!connection._closing &&
|
|
!connection.stream.destroyed
|
|
);
|
|
}
|
|
}
|
|
|
|
Object.assign(Client_MySQL2.prototype, {
|
|
// The "dialect", for reference elsewhere.
|
|
driverName: 'mysql2',
|
|
});
|
|
|
|
module.exports = Client_MySQL2;
|