DB schema updated to "7". Fixed #74.
This commit is contained in:
parent
c9033d1213
commit
ec16fcab08
8 changed files with 31 additions and 8 deletions
|
@ -1,6 +1,6 @@
|
||||||
DROP DATABASE IF EXISTS ##;
|
DROP DATABASE IF EXISTS ##;
|
||||||
-- !
|
-- !
|
||||||
CREATE DATABASE IF NOT EXISTS ## CHARACTER SET utf8 COLLATE utf8_general_ci;
|
CREATE DATABASE IF NOT EXISTS ## CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
|
||||||
-- !
|
-- !
|
||||||
USE ##;
|
USE ##;
|
||||||
-- !
|
-- !
|
||||||
|
|
|
@ -1,4 +1,3 @@
|
||||||
-- !
|
|
||||||
ALTER TABLE Messages
|
ALTER TABLE Messages
|
||||||
ADD COLUMN custom_hash TEXT;
|
ADD COLUMN custom_hash TEXT;
|
||||||
-- !
|
-- !
|
||||||
|
|
22
resources/misc/db_update_mysql_6_7.sql
Executable file
22
resources/misc/db_update_mysql_6_7.sql
Executable file
|
@ -0,0 +1,22 @@
|
||||||
|
-- !
|
||||||
|
ALTER DATABASE ##
|
||||||
|
CHARACTER SET = utf8mb4
|
||||||
|
COLLATE = utf8mb4_unicode_ci;
|
||||||
|
-- !
|
||||||
|
USE ##
|
||||||
|
-- !
|
||||||
|
ALTER TABLE messages
|
||||||
|
CONVERT TO CHARACTER SET utf8mb4
|
||||||
|
COLLATE utf8mb4_unicode_ci;
|
||||||
|
-- !
|
||||||
|
ALTER TABLE messages
|
||||||
|
CHANGE title title TEXT
|
||||||
|
CHARACTER SET utf8mb4
|
||||||
|
COLLATE utf8mb4_unicode_ci;
|
||||||
|
-- !
|
||||||
|
ALTER TABLE messages
|
||||||
|
CHANGE contents contents TEXT
|
||||||
|
CHARACTER SET utf8mb4
|
||||||
|
COLLATE utf8mb4_unicode_ci;
|
||||||
|
-- !
|
||||||
|
UPDATE Information SET inf_value = '7' WHERE inf_key = 'schema_version';
|
1
resources/misc/db_update_sqlite_6_7.sql
Executable file
1
resources/misc/db_update_sqlite_6_7.sql
Executable file
|
@ -0,0 +1 @@
|
||||||
|
UPDATE Information SET inf_value = '7' WHERE inf_key = 'schema_version';
|
|
@ -2,6 +2,7 @@
|
||||||
—————
|
—————
|
||||||
|
|
||||||
Added:
|
Added:
|
||||||
|
▪ MySQL database backend now requires at least version 5.5, DB encoding is now changed to utf8mb4 character set. (bug #74)
|
||||||
▪ Height if message attachment image is now configurable, defaults to 36. (issue #69)
|
▪ Height if message attachment image is now configurable, defaults to 36. (issue #69)
|
||||||
|
|
||||||
Changed:
|
Changed:
|
||||||
|
|
|
@ -109,7 +109,7 @@
|
||||||
#define APP_DB_SQLITE_FILE "database.db"
|
#define APP_DB_SQLITE_FILE "database.db"
|
||||||
|
|
||||||
// Keep this in sync with schema versions declared in SQL initialization code.
|
// Keep this in sync with schema versions declared in SQL initialization code.
|
||||||
#define APP_DB_SCHEMA_VERSION "6"
|
#define APP_DB_SCHEMA_VERSION "7"
|
||||||
#define APP_DB_UPDATE_FILE_PATTERN "db_update_%1_%2_%3.sql"
|
#define APP_DB_UPDATE_FILE_PATTERN "db_update_%1_%2_%3.sql"
|
||||||
#define APP_DB_COMMENT_SPLIT "-- !\n"
|
#define APP_DB_COMMENT_SPLIT "-- !\n"
|
||||||
#define APP_DB_WEB_PATH "data/database/web"
|
#define APP_DB_WEB_PATH "data/database/web"
|
||||||
|
|
|
@ -442,7 +442,7 @@ bool DatabaseFactory::sqliteUpdateDatabaseSchema(QSqlDatabase database, const QS
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool DatabaseFactory::mysqlUpdateDatabaseSchema(QSqlDatabase database, const QString &source_db_schema_version) {
|
bool DatabaseFactory::mysqlUpdateDatabaseSchema(QSqlDatabase database, const QString &source_db_schema_version, const QString &db_name) {
|
||||||
int working_version = QString(source_db_schema_version).remove('.').toInt();
|
int working_version = QString(source_db_schema_version).remove('.').toInt();
|
||||||
const int current_version = QString(APP_DB_SCHEMA_VERSION).remove('.').toInt();
|
const int current_version = QString(APP_DB_SCHEMA_VERSION).remove('.').toInt();
|
||||||
|
|
||||||
|
@ -464,8 +464,8 @@ bool DatabaseFactory::mysqlUpdateDatabaseSchema(QSqlDatabase database, const QSt
|
||||||
|
|
||||||
QStringList statements = QString(update_file_handle.readAll()).split(APP_DB_COMMENT_SPLIT, QString::SkipEmptyParts);
|
QStringList statements = QString(update_file_handle.readAll()).split(APP_DB_COMMENT_SPLIT, QString::SkipEmptyParts);
|
||||||
|
|
||||||
foreach (const QString &statement, statements) {
|
foreach (QString statement, statements) {
|
||||||
QSqlQuery query = database.exec(statement);
|
QSqlQuery query = database.exec(statement.replace(APP_DB_NAME_PLACEHOLDER, db_name));
|
||||||
|
|
||||||
if (query.lastError().isValid()) {
|
if (query.lastError().isValid()) {
|
||||||
qFatal("Query for updating database schema failed: '%s'.", qPrintable(query.lastError().text()));
|
qFatal("Query for updating database schema failed: '%s'.", qPrintable(query.lastError().text()));
|
||||||
|
@ -691,7 +691,7 @@ QSqlDatabase DatabaseFactory::mysqlInitializeDatabase(const QString &connection_
|
||||||
const QString installed_db_schema = query_db.value(0).toString();
|
const QString installed_db_schema = query_db.value(0).toString();
|
||||||
|
|
||||||
if (installed_db_schema < APP_DB_SCHEMA_VERSION) {
|
if (installed_db_schema < APP_DB_SCHEMA_VERSION) {
|
||||||
if (mysqlUpdateDatabaseSchema(database, installed_db_schema)) {
|
if (mysqlUpdateDatabaseSchema(database, installed_db_schema, database_name)) {
|
||||||
qDebug("Database schema was updated from '%s' to '%s' successully or it is already up to date.",
|
qDebug("Database schema was updated from '%s' to '%s' successully or it is already up to date.",
|
||||||
qPrintable(installed_db_schema),
|
qPrintable(installed_db_schema),
|
||||||
APP_DB_SCHEMA_VERSION);
|
APP_DB_SCHEMA_VERSION);
|
||||||
|
|
|
@ -135,7 +135,7 @@ class DatabaseFactory : public QObject {
|
||||||
QSqlDatabase mysqlInitializeDatabase(const QString &connection_name);
|
QSqlDatabase mysqlInitializeDatabase(const QString &connection_name);
|
||||||
|
|
||||||
// Updates database schema.
|
// Updates database schema.
|
||||||
bool mysqlUpdateDatabaseSchema(QSqlDatabase database, const QString &source_db_schema_version);
|
bool mysqlUpdateDatabaseSchema(QSqlDatabase database, const QString &source_db_schema_version, const QString &db_name);
|
||||||
|
|
||||||
// Runs "VACUUM" on the database.
|
// Runs "VACUUM" on the database.
|
||||||
bool mysqlVacuumDatabase();
|
bool mysqlVacuumDatabase();
|
||||||
|
|
Loading…
Add table
Reference in a new issue