diff --git a/src/core/database.cpp b/src/core/database.cpp index e300bf1c3..aa52af3d9 100644 --- a/src/core/database.cpp +++ b/src/core/database.cpp @@ -488,6 +488,20 @@ void Database::AttachDatabase(const QString& database_name, attached_databases_[database_name] = database; } +void Database::AttachDatabaseOnDbConnection(const QString &database_name, + const AttachedDatabase &database, + QSqlDatabase& db) { + AttachDatabase(database_name, database); + + // Attach the db + QSqlQuery q("ATTACH DATABASE :filename AS :alias", db); + q.bindValue(":filename", database.filename_); + q.bindValue(":alias", database_name); + if (!q.exec()) { + qFatal("Couldn't attach external database '%s'", database_name.toAscii().constData()); + } +} + void Database::DetachDatabase(const QString& database_name) { QMutexLocker l(&mutex_); { diff --git a/src/core/database.h b/src/core/database.h index 06c8e5ee4..8a66174e3 100644 --- a/src/core/database.h +++ b/src/core/database.h @@ -74,6 +74,9 @@ class Database : public QObject { int current_schema_version() const { return kSchemaVersion; } void AttachDatabase(const QString& database_name, const AttachedDatabase& database); + void AttachDatabaseOnDbConnection(const QString& database_name, + const AttachedDatabase& database, + QSqlDatabase& db); void DetachDatabase(const QString& database_name); signals: diff --git a/src/networkremote/outgoingdatacreator.cpp b/src/networkremote/outgoingdatacreator.cpp index 85ae8cdfb..4d85fdc34 100644 --- a/src/networkremote/outgoingdatacreator.cpp +++ b/src/networkremote/outgoingdatacreator.cpp @@ -721,12 +721,12 @@ void OutgoingDataCreator::SendLibrary(RemoteClient *client) { // Attach this file to the database Database::AttachedDatabase adb(temp_file_name, "", true); - app_->database()->AttachDatabase("songs_export", adb); QSqlDatabase db(app_->database()->Connect()); + app_->database()->AttachDatabaseOnDbConnection("songs_export", adb, db); + // Copy the content of the song table to this temporary database QSqlQuery q(QString("create table songs_export.songs as SELECT * FROM songs;"), db); - q.exec(); if (app_->database()->CheckErrors(q)) return;