mirror of
https://github.com/strapi/strapi.git
synced 2025-10-27 16:10:08 +00:00
add error management
This commit is contained in:
parent
11d6f7803c
commit
0c76c5ae1a
@ -1,6 +1,6 @@
|
||||
'use strict';
|
||||
|
||||
const { MARIADB, MYSQL } = require('../../utils/constants');
|
||||
const { MARIADB, MYSQL, UNKNOWN } = require('../../utils/constants');
|
||||
|
||||
const SQL_QUERIES = {
|
||||
VERSION: `SELECT version() as version`,
|
||||
@ -12,11 +12,20 @@ class MysqlDatabaseInspector {
|
||||
}
|
||||
|
||||
async getInformation() {
|
||||
const [results] = await this.db.connection.raw(SQL_QUERIES.VERSION);
|
||||
const version = results[0].version;
|
||||
|
||||
const [versionNumber, databaseName] = version.split('-');
|
||||
const database = databaseName && databaseName.toLowerCase() === 'mariadb' ? MARIADB : MYSQL;
|
||||
let database;
|
||||
let versionNumber;
|
||||
try {
|
||||
const [results] = await this.db.connection.raw(SQL_QUERIES.VERSION);
|
||||
const versionSplit = results[0].version.split('-');
|
||||
const databaseName = versionSplit[1];
|
||||
versionNumber = versionSplit[0];
|
||||
database = databaseName && databaseName.toLowerCase() === 'mariadb' ? MARIADB : MYSQL;
|
||||
throw new Error('oups');
|
||||
} catch (e) {
|
||||
database = UNKNOWN;
|
||||
versionNumber = UNKNOWN;
|
||||
strapi.log.warn(`Database version couldn't be retrieved: ${e.message}`);
|
||||
}
|
||||
|
||||
return {
|
||||
database,
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
'use strict';
|
||||
|
||||
const { POSTGRES } = require('../../utils/constants');
|
||||
const { POSTGRES, UNKNOWN } = require('../../utils/constants');
|
||||
|
||||
const SQL_QUERIES = {
|
||||
VERSION: `SELECT current_setting('server_version') as version`,
|
||||
@ -12,12 +12,18 @@ class PostgresqlDatabaseInspector {
|
||||
}
|
||||
|
||||
async getInformation() {
|
||||
const { rows } = await this.db.connection.raw(SQL_QUERIES.VERSION);
|
||||
const version = rows[0].version;
|
||||
let version;
|
||||
try {
|
||||
const { rows } = await this.db.connection.raw(SQL_QUERIES.VERSION);
|
||||
version = rows[0].version.split(' ')[0];
|
||||
} catch (e) {
|
||||
version = UNKNOWN;
|
||||
strapi.log.warn(`Database version couldn't be retrieved: ${e.message}`);
|
||||
}
|
||||
|
||||
return {
|
||||
database: POSTGRES,
|
||||
version: version.split(' ')[0],
|
||||
version,
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
'use strict';
|
||||
|
||||
const { SQLITE } = require('../../utils/constants');
|
||||
const { SQLITE, UNKNOWN } = require('../../utils/constants');
|
||||
|
||||
const SQL_QUERIES = {
|
||||
VERSION: `SELECT sqlite_version() as version`,
|
||||
@ -12,9 +12,14 @@ class SqliteDatabaseInspector {
|
||||
}
|
||||
|
||||
async getInformation() {
|
||||
const results = await this.db.connection.raw(SQL_QUERIES.VERSION);
|
||||
const version = results[0].version;
|
||||
|
||||
let version;
|
||||
try {
|
||||
const results = await this.db.connection.raw(SQL_QUERIES.VERSION);
|
||||
version = results[0].version;
|
||||
} catch (e) {
|
||||
version = UNKNOWN;
|
||||
strapi.log.warn(`Database version couldn't be retrieved: ${e.message}`);
|
||||
}
|
||||
return {
|
||||
database: SQLITE,
|
||||
version,
|
||||
|
||||
@ -2,7 +2,7 @@
|
||||
|
||||
const { map, isEmpty } = require('lodash/fp');
|
||||
const semver = require('semver');
|
||||
const { MYSQL } = require('../utils/constants');
|
||||
const { MYSQL, UNKNOWN } = require('../utils/constants');
|
||||
const {
|
||||
isBidirectional,
|
||||
isOneToAny,
|
||||
@ -199,7 +199,12 @@ const cleanOrderColumns = async ({ id, attribute, db, inverseRelIds, transaction
|
||||
|
||||
// Handle databases that don't support window function ROW_NUMBER
|
||||
const { database, version } = strapi.db.getDatabaseInformation();
|
||||
if (database === MYSQL && semver.lt(version, '8.0.0')) {
|
||||
if (
|
||||
strapi.db.dialect.client === 'mysql' &&
|
||||
[MYSQL, UNKNOWN].includes(database) &&
|
||||
(!semver.valid(version) || semver.lt(version, '8.0.0'))
|
||||
) {
|
||||
console.log('DEDANS');
|
||||
await cleanOrderColumnsForOldDatabases({ id, attribute, db, inverseRelIds, transaction: trx });
|
||||
return;
|
||||
}
|
||||
|
||||
@ -1,6 +1,7 @@
|
||||
'use strict';
|
||||
|
||||
module.exports = {
|
||||
UNKNOWN: 'unknown',
|
||||
SQLITE: 'SQLite',
|
||||
POSTGRES: 'Postgres',
|
||||
MYSQL: 'MySQL',
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user