Save work...
This commit is contained in:
parent
e0d6763708
commit
4fb05c3644
|
@ -68,16 +68,22 @@
|
||||||
#define FILTER_WIDTH 150
|
#define FILTER_WIDTH 150
|
||||||
#define FILTER_RIGHT_MARGIN 5
|
#define FILTER_RIGHT_MARGIN 5
|
||||||
|
|
||||||
#define APP_DB_TEST_MYSQL "MySQLTest"
|
#define APP_DB_PSQL_DRIVER "QPSQL"
|
||||||
|
#define APP_DB_PSQL_PORT 5432
|
||||||
|
#define APP_DB_PSQL_FALLBACK_DB "postgres"
|
||||||
|
|
||||||
|
#define APP_DB_MYSQL_DRIVER "QMYSQL"
|
||||||
|
#define APP_DB_MYSQL_INIT "db_init_mysql.sql"
|
||||||
|
#define APP_DB_MYSQL_TEST "MySQLTest"
|
||||||
#define APP_DB_MYSQL_PORT 3306
|
#define APP_DB_MYSQL_PORT 3306
|
||||||
#define APP_DB_DRIVER_SQLITE "QSQLITE"
|
|
||||||
#define APP_DB_DRIVER_MYSQL "QMYSQL"
|
#define APP_DB_SQLITE_DRIVER "QSQLITE"
|
||||||
#define APP_DB_INIT_MYSQL "db_init_mysql.sql"
|
#define APP_DB_SQLITE_INIT "db_init_sqlite.sql"
|
||||||
#define APP_DB_INIT_SQLITE "db_init_sqlite.sql"
|
#define APP_DB_SQLITE_MEMORY_INIT "db_init_sqlite_memory.sql"
|
||||||
#define APP_DB_INIT_SQLITE_MEMORY "db_init_sqlite_memory.sql"
|
#define APP_DB_SQLITE_PATH "data/database/local"
|
||||||
#define APP_DB_INIT_SPLIT "-- !\n"
|
#define APP_DB_SQLITE_FILE "database.db"
|
||||||
#define APP_DB_PATH "data/database/local"
|
|
||||||
#define APP_DB_FILE "database.db"
|
#define APP_DB_COMMENT_SPLIT "-- !\n"
|
||||||
#define APP_DB_WEB_PATH "data/database/web"
|
#define APP_DB_WEB_PATH "data/database/web"
|
||||||
|
|
||||||
#define APP_CFG_PATH "data/config"
|
#define APP_CFG_PATH "data/config"
|
||||||
|
|
|
@ -513,15 +513,15 @@ void FormSettings::loadDataStorage() {
|
||||||
|
|
||||||
// Load SQLite.
|
// Load SQLite.
|
||||||
m_ui->m_cmbDatabaseDriver->addItem(
|
m_ui->m_cmbDatabaseDriver->addItem(
|
||||||
tr("SQLite (embedded database)"), APP_DB_DRIVER_SQLITE);
|
tr("SQLite (embedded database)"), APP_DB_SQLITE_DRIVER);
|
||||||
|
|
||||||
// Load in-memory database status.
|
// Load in-memory database status.
|
||||||
m_ui->m_checkSqliteUseInMemoryDatabase->setChecked(Settings::instance()->value(APP_CFG_DB, "use_in_memory_db", false).toBool());
|
m_ui->m_checkSqliteUseInMemoryDatabase->setChecked(Settings::instance()->value(APP_CFG_DB, "use_in_memory_db", false).toBool());
|
||||||
|
|
||||||
if (QSqlDatabase::isDriverAvailable(APP_DB_DRIVER_MYSQL)) {
|
if (QSqlDatabase::isDriverAvailable(APP_DB_MYSQL_DRIVER)) {
|
||||||
// Load MySQL.
|
// Load MySQL.
|
||||||
m_ui->m_cmbDatabaseDriver->addItem(
|
m_ui->m_cmbDatabaseDriver->addItem(
|
||||||
tr("MySQL/MariaDB (dedicated database)"), APP_DB_DRIVER_MYSQL);
|
tr("MySQL/MariaDB (dedicated database)"), APP_DB_MYSQL_DRIVER);
|
||||||
|
|
||||||
// Setup placeholders.
|
// Setup placeholders.
|
||||||
m_ui->m_txtMysqlHostname->lineEdit()->setPlaceholderText(tr("Hostname of your MySQL server"));
|
m_ui->m_txtMysqlHostname->lineEdit()->setPlaceholderText(tr("Hostname of your MySQL server"));
|
||||||
|
@ -536,7 +536,7 @@ void FormSettings::loadDataStorage() {
|
||||||
|
|
||||||
int index_current_backend = m_ui->m_cmbDatabaseDriver->findData(Settings::instance()->value(APP_CFG_DB,
|
int index_current_backend = m_ui->m_cmbDatabaseDriver->findData(Settings::instance()->value(APP_CFG_DB,
|
||||||
"database_driver",
|
"database_driver",
|
||||||
APP_DB_DRIVER_SQLITE).toString());
|
APP_DB_SQLITE_DRIVER).toString());
|
||||||
|
|
||||||
if (index_current_backend >= 0) {
|
if (index_current_backend >= 0) {
|
||||||
m_ui->m_cmbDatabaseDriver->setCurrentIndex(index_current_backend);
|
m_ui->m_cmbDatabaseDriver->setCurrentIndex(index_current_backend);
|
||||||
|
@ -553,13 +553,13 @@ void FormSettings::saveDataStorage() {
|
||||||
}
|
}
|
||||||
|
|
||||||
// Save data storage settings.
|
// Save data storage settings.
|
||||||
QString original_db_driver = Settings::instance()->value(APP_CFG_DB, "database_driver", APP_DB_DRIVER_SQLITE).toString();
|
QString original_db_driver = Settings::instance()->value(APP_CFG_DB, "database_driver", APP_DB_SQLITE_DRIVER).toString();
|
||||||
QString selected_db_driver = m_ui->m_cmbDatabaseDriver->itemData(m_ui->m_cmbDatabaseDriver->currentIndex()).toString();
|
QString selected_db_driver = m_ui->m_cmbDatabaseDriver->itemData(m_ui->m_cmbDatabaseDriver->currentIndex()).toString();
|
||||||
|
|
||||||
// Save SQLite.
|
// Save SQLite.
|
||||||
Settings::instance()->setValue(APP_CFG_DB, "use_in_memory_db", new_inmemory);
|
Settings::instance()->setValue(APP_CFG_DB, "use_in_memory_db", new_inmemory);
|
||||||
|
|
||||||
if (QSqlDatabase::isDriverAvailable(APP_DB_DRIVER_MYSQL)) {
|
if (QSqlDatabase::isDriverAvailable(APP_DB_MYSQL_DRIVER)) {
|
||||||
// Save MySQL.
|
// Save MySQL.
|
||||||
Settings::instance()->setValue(APP_CFG_DB, "mysql_hostname", m_ui->m_txtMysqlHostname->lineEdit()->text());
|
Settings::instance()->setValue(APP_CFG_DB, "mysql_hostname", m_ui->m_txtMysqlHostname->lineEdit()->text());
|
||||||
Settings::instance()->setValue(APP_CFG_DB, "mysql_username", m_ui->m_txtMysqlUsername->lineEdit()->text());
|
Settings::instance()->setValue(APP_CFG_DB, "mysql_username", m_ui->m_txtMysqlUsername->lineEdit()->text());
|
||||||
|
|
|
@ -52,8 +52,8 @@ DatabaseFactory *DatabaseFactory::instance() {
|
||||||
|
|
||||||
DatabaseFactory::MySQLError DatabaseFactory::mysqlTestConnection(const QString &hostname, int port,
|
DatabaseFactory::MySQLError DatabaseFactory::mysqlTestConnection(const QString &hostname, int port,
|
||||||
const QString &username, const QString &password) {
|
const QString &username, const QString &password) {
|
||||||
QSqlDatabase database = QSqlDatabase::addDatabase(APP_DB_DRIVER_MYSQL,
|
QSqlDatabase database = QSqlDatabase::addDatabase(APP_DB_MYSQL_DRIVER,
|
||||||
APP_DB_TEST_MYSQL);
|
APP_DB_MYSQL_TEST);
|
||||||
|
|
||||||
database.setHostName(hostname);
|
database.setHostName(hostname);
|
||||||
database.setPort(port);
|
database.setPort(port);
|
||||||
|
@ -63,7 +63,7 @@ DatabaseFactory::MySQLError DatabaseFactory::mysqlTestConnection(const QString &
|
||||||
if (database.open()) {
|
if (database.open()) {
|
||||||
// Connection succeeded, clean up the mess and return OK status.
|
// Connection succeeded, clean up the mess and return OK status.
|
||||||
database.close();
|
database.close();
|
||||||
removeConnection(APP_DB_TEST_MYSQL);
|
removeConnection(APP_DB_MYSQL_TEST);
|
||||||
return MySQLOk;
|
return MySQLOk;
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
|
@ -71,7 +71,7 @@ DatabaseFactory::MySQLError DatabaseFactory::mysqlTestConnection(const QString &
|
||||||
// error code.
|
// error code.
|
||||||
MySQLError error_code = static_cast<MySQLError>(database.lastError().number());
|
MySQLError error_code = static_cast<MySQLError>(database.lastError().number());
|
||||||
|
|
||||||
removeConnection(APP_DB_TEST_MYSQL);
|
removeConnection(APP_DB_MYSQL_TEST);
|
||||||
return error_code;
|
return error_code;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -100,17 +100,17 @@ void DatabaseFactory::sqliteAssemblyDatabaseFilePath() {
|
||||||
if (Settings::instance()->type() == Settings::Portable) {
|
if (Settings::instance()->type() == Settings::Portable) {
|
||||||
m_sqliteDatabaseFilePath = qApp->applicationDirPath() +
|
m_sqliteDatabaseFilePath = qApp->applicationDirPath() +
|
||||||
QDir::separator() +
|
QDir::separator() +
|
||||||
QString(APP_DB_PATH);
|
QString(APP_DB_SQLITE_PATH);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
m_sqliteDatabaseFilePath = QDir::homePath() + QDir::separator() +
|
m_sqliteDatabaseFilePath = QDir::homePath() + QDir::separator() +
|
||||||
QString(APP_LOW_H_NAME) + QDir::separator() +
|
QString(APP_LOW_H_NAME) + QDir::separator() +
|
||||||
QString(APP_DB_PATH);
|
QString(APP_DB_SQLITE_PATH);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
QSqlDatabase DatabaseFactory::sqliteInitializeInMemoryDatabase() {
|
QSqlDatabase DatabaseFactory::sqliteInitializeInMemoryDatabase() {
|
||||||
QSqlDatabase database = QSqlDatabase::addDatabase(APP_DB_DRIVER_SQLITE);
|
QSqlDatabase database = QSqlDatabase::addDatabase(APP_DB_SQLITE_DRIVER);
|
||||||
|
|
||||||
database.setDatabaseName(":memory:");
|
database.setDatabaseName(":memory:");
|
||||||
|
|
||||||
|
@ -136,16 +136,16 @@ QSqlDatabase DatabaseFactory::sqliteInitializeInMemoryDatabase() {
|
||||||
if (query_db.lastError().isValid()) {
|
if (query_db.lastError().isValid()) {
|
||||||
qWarning("Error occurred. In-memory SQLite database is not initialized. Initializing now.");
|
qWarning("Error occurred. In-memory SQLite database is not initialized. Initializing now.");
|
||||||
|
|
||||||
QFile file_init(APP_MISC_PATH + QDir::separator() + APP_DB_INIT_SQLITE_MEMORY);
|
QFile file_init(APP_MISC_PATH + QDir::separator() + APP_DB_SQLITE_MEMORY_INIT);
|
||||||
|
|
||||||
if (!file_init.open(QIODevice::ReadOnly | QIODevice::Text)) {
|
if (!file_init.open(QIODevice::ReadOnly | QIODevice::Text)) {
|
||||||
// Database initialization file not opened. HUGE problem.
|
// Database initialization file not opened. HUGE problem.
|
||||||
qFatal("In-memory SQLite database initialization file '%s' from directory '%s' was not found. In-memory database is uninitialized.",
|
qFatal("In-memory SQLite database initialization file '%s' from directory '%s' was not found. In-memory database is uninitialized.",
|
||||||
APP_DB_INIT_SQLITE,
|
APP_DB_SQLITE_INIT,
|
||||||
qPrintable(APP_MISC_PATH));
|
qPrintable(APP_MISC_PATH));
|
||||||
}
|
}
|
||||||
|
|
||||||
QStringList statements = QString(file_init.readAll()).split(APP_DB_INIT_SPLIT,
|
QStringList statements = QString(file_init.readAll()).split(APP_DB_COMMENT_SPLIT,
|
||||||
QString::SkipEmptyParts);
|
QString::SkipEmptyParts);
|
||||||
database.transaction();
|
database.transaction();
|
||||||
|
|
||||||
|
@ -154,7 +154,7 @@ QSqlDatabase DatabaseFactory::sqliteInitializeInMemoryDatabase() {
|
||||||
|
|
||||||
if (query_db.lastError().isValid()) {
|
if (query_db.lastError().isValid()) {
|
||||||
qFatal("In-memory SQLite database initialization failed. Initialization script '%s' is not correct.",
|
qFatal("In-memory SQLite database initialization failed. Initialization script '%s' is not correct.",
|
||||||
APP_DB_INIT_SQLITE);
|
APP_DB_SQLITE_INIT);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -200,7 +200,7 @@ QSqlDatabase DatabaseFactory::sqliteInitializeInMemoryDatabase() {
|
||||||
QSqlDatabase DatabaseFactory::sqliteInitializeFileBasedDatabase(const QString &connection_name) {
|
QSqlDatabase DatabaseFactory::sqliteInitializeFileBasedDatabase(const QString &connection_name) {
|
||||||
// Prepare file paths.
|
// Prepare file paths.
|
||||||
QDir db_path(m_sqliteDatabaseFilePath);
|
QDir db_path(m_sqliteDatabaseFilePath);
|
||||||
QFile db_file(db_path.absoluteFilePath(APP_DB_FILE));
|
QFile db_file(db_path.absoluteFilePath(APP_DB_SQLITE_FILE));
|
||||||
|
|
||||||
// Check if database directory exists.
|
// Check if database directory exists.
|
||||||
if (!db_path.exists()) {
|
if (!db_path.exists()) {
|
||||||
|
@ -216,7 +216,7 @@ QSqlDatabase DatabaseFactory::sqliteInitializeFileBasedDatabase(const QString &c
|
||||||
// Folders are created. Create new QSQLDatabase object.
|
// Folders are created. Create new QSQLDatabase object.
|
||||||
QSqlDatabase database;
|
QSqlDatabase database;
|
||||||
|
|
||||||
database = QSqlDatabase::addDatabase(APP_DB_DRIVER_SQLITE,
|
database = QSqlDatabase::addDatabase(APP_DB_SQLITE_DRIVER,
|
||||||
connection_name);
|
connection_name);
|
||||||
database.setDatabaseName(db_file.fileName());
|
database.setDatabaseName(db_file.fileName());
|
||||||
|
|
||||||
|
@ -242,16 +242,16 @@ QSqlDatabase DatabaseFactory::sqliteInitializeFileBasedDatabase(const QString &c
|
||||||
if (query_db.lastError().isValid()) {
|
if (query_db.lastError().isValid()) {
|
||||||
qWarning("Error occurred. File-based SQLite database is not initialized. Initializing now.");
|
qWarning("Error occurred. File-based SQLite database is not initialized. Initializing now.");
|
||||||
|
|
||||||
QFile file_init(APP_MISC_PATH + QDir::separator() + APP_DB_INIT_SQLITE);
|
QFile file_init(APP_MISC_PATH + QDir::separator() + APP_DB_SQLITE_INIT);
|
||||||
|
|
||||||
if (!file_init.open(QIODevice::ReadOnly | QIODevice::Text)) {
|
if (!file_init.open(QIODevice::ReadOnly | QIODevice::Text)) {
|
||||||
// Database initialization file not opened. HUGE problem.
|
// Database initialization file not opened. HUGE problem.
|
||||||
qFatal("SQLite database initialization file '%s' from directory '%s' was not found. File-based database is uninitialized.",
|
qFatal("SQLite database initialization file '%s' from directory '%s' was not found. File-based database is uninitialized.",
|
||||||
APP_DB_INIT_SQLITE,
|
APP_DB_SQLITE_INIT,
|
||||||
qPrintable(APP_MISC_PATH));
|
qPrintable(APP_MISC_PATH));
|
||||||
}
|
}
|
||||||
|
|
||||||
QStringList statements = QString(file_init.readAll()).split(APP_DB_INIT_SPLIT,
|
QStringList statements = QString(file_init.readAll()).split(APP_DB_COMMENT_SPLIT,
|
||||||
QString::SkipEmptyParts);
|
QString::SkipEmptyParts);
|
||||||
database.transaction();
|
database.transaction();
|
||||||
|
|
||||||
|
@ -260,7 +260,7 @@ QSqlDatabase DatabaseFactory::sqliteInitializeFileBasedDatabase(const QString &c
|
||||||
|
|
||||||
if (query_db.lastError().isValid()) {
|
if (query_db.lastError().isValid()) {
|
||||||
qFatal("File-based SQLite database initialization failed. Initialization script '%s' is not correct.",
|
qFatal("File-based SQLite database initialization failed. Initialization script '%s' is not correct.",
|
||||||
APP_DB_INIT_SQLITE);
|
APP_DB_SQLITE_INIT);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -330,9 +330,12 @@ void DatabaseFactory::sqliteSaveMemoryDatabase() {
|
||||||
}
|
}
|
||||||
|
|
||||||
void DatabaseFactory::determineDriver() {
|
void DatabaseFactory::determineDriver() {
|
||||||
QString db_driver = Settings::instance()->value(APP_CFG_DB, "database_driver", APP_DB_DRIVER_SQLITE).toString();
|
QString db_driver = Settings::instance()->value(APP_CFG_DB,
|
||||||
|
"database_driver",
|
||||||
|
APP_DB_SQLITE_DRIVER).toString();
|
||||||
|
|
||||||
if (db_driver == APP_DB_DRIVER_MYSQL && QSqlDatabase::isDriverAvailable(APP_DB_DRIVER_MYSQL)) {
|
if (db_driver == APP_DB_MYSQL_DRIVER &&
|
||||||
|
QSqlDatabase::isDriverAvailable(APP_DB_SQLITE_DRIVER)) {
|
||||||
// User wants to use MySQL and MySQL is actually available. Use it.
|
// User wants to use MySQL and MySQL is actually available. Use it.
|
||||||
m_activeDatabaseDriver = MYSQL;
|
m_activeDatabaseDriver = MYSQL;
|
||||||
|
|
||||||
|
@ -377,7 +380,7 @@ QSqlDatabase DatabaseFactory::mysqlConnection(const QString &connection_name) {
|
||||||
else {
|
else {
|
||||||
// Database connection with this name does not exist
|
// Database connection with this name does not exist
|
||||||
// yet, add it and set it up.
|
// yet, add it and set it up.
|
||||||
database = QSqlDatabase::addDatabase(APP_DB_DRIVER_MYSQL, connection_name);
|
database = QSqlDatabase::addDatabase(APP_DB_MYSQL_DRIVER, connection_name);
|
||||||
|
|
||||||
database.setHostName(Settings::instance()->value(APP_CFG_DB, "mysql_hostname").toString());
|
database.setHostName(Settings::instance()->value(APP_CFG_DB, "mysql_hostname").toString());
|
||||||
database.setPort(Settings::instance()->value(APP_CFG_DB, "mysql_port", APP_DB_MYSQL_PORT).toInt());
|
database.setPort(Settings::instance()->value(APP_CFG_DB, "mysql_port", APP_DB_MYSQL_PORT).toInt());
|
||||||
|
@ -402,7 +405,7 @@ QSqlDatabase DatabaseFactory::mysqlConnection(const QString &connection_name) {
|
||||||
|
|
||||||
QSqlDatabase DatabaseFactory::mysqlInitializeDatabase(const QString &connection_name) {
|
QSqlDatabase DatabaseFactory::mysqlInitializeDatabase(const QString &connection_name) {
|
||||||
// Folders are created. Create new QSQLDatabase object.
|
// Folders are created. Create new QSQLDatabase object.
|
||||||
QSqlDatabase database = QSqlDatabase::addDatabase(APP_DB_DRIVER_MYSQL,
|
QSqlDatabase database = QSqlDatabase::addDatabase(APP_DB_MYSQL_DRIVER,
|
||||||
connection_name);
|
connection_name);
|
||||||
|
|
||||||
database.setHostName(Settings::instance()->value(APP_CFG_DB, "mysql_hostname").toString());
|
database.setHostName(Settings::instance()->value(APP_CFG_DB, "mysql_hostname").toString());
|
||||||
|
@ -425,16 +428,16 @@ QSqlDatabase DatabaseFactory::mysqlInitializeDatabase(const QString &connection_
|
||||||
// or schema version is wrong, then initialize it.
|
// or schema version is wrong, then initialize it.
|
||||||
qWarning("Error occurred. MySQL database is not initialized. Initializing now.");
|
qWarning("Error occurred. MySQL database is not initialized. Initializing now.");
|
||||||
|
|
||||||
QFile file_init(APP_MISC_PATH + QDir::separator() + APP_DB_INIT_MYSQL);
|
QFile file_init(APP_MISC_PATH + QDir::separator() + APP_DB_MYSQL_INIT);
|
||||||
|
|
||||||
if (!file_init.open(QIODevice::ReadOnly | QIODevice::Text)) {
|
if (!file_init.open(QIODevice::ReadOnly | QIODevice::Text)) {
|
||||||
// Database initialization file not opened. HUGE problem.
|
// Database initialization file not opened. HUGE problem.
|
||||||
qFatal("MySQL database initialization file '%s' from directory '%s' was not found. File-based database is uninitialized.",
|
qFatal("MySQL database initialization file '%s' from directory '%s' was not found. File-based database is uninitialized.",
|
||||||
APP_DB_INIT_MYSQL,
|
APP_DB_MYSQL_INIT,
|
||||||
qPrintable(APP_MISC_PATH));
|
qPrintable(APP_MISC_PATH));
|
||||||
}
|
}
|
||||||
|
|
||||||
QStringList statements = QString(file_init.readAll()).split(APP_DB_INIT_SPLIT,
|
QStringList statements = QString(file_init.readAll()).split(APP_DB_COMMENT_SPLIT,
|
||||||
QString::SkipEmptyParts);
|
QString::SkipEmptyParts);
|
||||||
database.transaction();
|
database.transaction();
|
||||||
|
|
||||||
|
@ -443,7 +446,7 @@ QSqlDatabase DatabaseFactory::mysqlInitializeDatabase(const QString &connection_
|
||||||
|
|
||||||
if (query_db.lastError().isValid()) {
|
if (query_db.lastError().isValid()) {
|
||||||
qFatal("MySQL database initialization failed. Initialization script '%s' is not correct.",
|
qFatal("MySQL database initialization failed. Initialization script '%s' is not correct.",
|
||||||
APP_DB_INIT_MYSQL);
|
APP_DB_MYSQL_INIT);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -513,10 +516,10 @@ QSqlDatabase DatabaseFactory::sqliteConnection(const QString &connection_name,
|
||||||
else {
|
else {
|
||||||
// Database connection with this name does not exist
|
// Database connection with this name does not exist
|
||||||
// yet, add it and set it up.
|
// yet, add it and set it up.
|
||||||
database = QSqlDatabase::addDatabase(APP_DB_DRIVER_SQLITE, connection_name);
|
database = QSqlDatabase::addDatabase(APP_DB_SQLITE_DRIVER, connection_name);
|
||||||
|
|
||||||
QDir db_path(m_sqliteDatabaseFilePath);
|
QDir db_path(m_sqliteDatabaseFilePath);
|
||||||
QFile db_file(db_path.absoluteFilePath(APP_DB_FILE));
|
QFile db_file(db_path.absoluteFilePath(APP_DB_SQLITE_FILE));
|
||||||
|
|
||||||
// Setup database file path.
|
// Setup database file path.
|
||||||
database.setDatabaseName(db_file.fileName());
|
database.setDatabaseName(db_file.fileName());
|
||||||
|
|
|
@ -41,6 +41,7 @@ class DatabaseFactory : public QObject {
|
||||||
FromSettings
|
FromSettings
|
||||||
};
|
};
|
||||||
|
|
||||||
|
// Describes possible MySQL-specific errors.
|
||||||
enum MySQLError {
|
enum MySQLError {
|
||||||
MySQLOk = 0,
|
MySQLOk = 0,
|
||||||
MySQLAccessDenied = 1045,
|
MySQLAccessDenied = 1045,
|
||||||
|
|
Loading…
Reference in New Issue