diff -r e6a4a3a29584 -r 3b9abdae181e src/database/db_product.cpp --- a/src/database/db_product.cpp Sat Jun 01 15:19:08 2024 +0200 +++ b/src/database/db_product.cpp Sat Jun 01 21:10:54 2024 +0200 @@ -23,6 +23,31 @@ { QSqlQuery query, yquery; + /* + * Upgrade database extra columns for target water. + */ + query.exec("SHOW COLUMNS FROM `products` LIKE 'tw_name'"); + if (! query.first()) { + qWarning() << "loadProduct upgrade for target water"; + QString sql = "ALTER TABLE `products` ADD `tw_name` VARCHAR(64) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL AFTER `calc_acid`, "; + sql.append("ADD `tw_calcium` FLOAT NOT NULL DEFAULT '0' AFTER `tw_name`, "); + sql.append("ADD `tw_sulfate` FLOAT NOT NULL DEFAULT '0' AFTER `tw_calcium`, "); + sql.append("ADD `tw_chloride` FLOAT NOT NULL DEFAULT '0' AFTER `tw_sulfate`, "); + sql.append("ADD `tw_sodium` FLOAT NOT NULL DEFAULT '0' AFTER `tw_chloride`, "); + sql.append("ADD `tw_magnesium` FLOAT NOT NULL DEFAULT '0' AFTER `tw_sodium`, "); + sql.append("ADD `tw_total_alkalinity` FLOAT NOT NULL DEFAULT '0' AFTER `tw_magnesium`;"); +// qDebug() << sql; + query.exec(sql); + if (query.lastError().isValid()) { + qWarning() << "loadProduct upgrade" << query.lastError(); + QMessageBox::warning(dialog, QObject::tr("Database error"), + QObject::tr("MySQL error: %1\n%2\n%3") + .arg(query.lastError().nativeErrorCode()) + .arg(query.lastError().driverText()) + .arg(query.lastError().databaseText())); + } + } + query.prepare("SELECT * FROM products WHERE record = :recno"); query.bindValue(":recno", recno); query.exec();