From cdba6ce722510ee03899de8f5b2f8d7027c9e695 Mon Sep 17 00:00:00 2001 From: R4SAS Date: Wed, 25 Apr 2018 05:55:47 +0300 Subject: [PATCH 1/3] fix "field doesn't have a default values" error Otherwise cron will return error: `Failed to update share statistics for %username%: SQL Query failed: 1364` --- sql/000_base_structure.sql | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/sql/000_base_structure.sql b/sql/000_base_structure.sql index 9ab29f71..35a47631 100644 --- a/sql/000_base_structure.sql +++ b/sql/000_base_structure.sql @@ -182,9 +182,9 @@ CREATE TABLE IF NOT EXISTS `statistics_shares` ( `id` int(10) unsigned NOT NULL AUTO_INCREMENT, `account_id` int(10) unsigned NOT NULL, `block_id` int(10) unsigned NOT NULL, - `valid` bigint(20) NOT NULL, + `valid` bigint(20) NOT NULL DEFAULT '0', `invalid` bigint(20) NOT NULL DEFAULT '0', - `pplns_valid` bigint(20) NOT NULL, + `pplns_valid` bigint(20) NOT NULL DEFAULT '0', `pplns_invalid` bigint(20) NOT NULL DEFAULT '0', PRIMARY KEY (`id`), KEY `account_id` (`account_id`), From b007bfa9a90238763f7bc634fb93cbecdbf44e4c Mon Sep 17 00:00:00 2001 From: R4SAS Date: Wed, 25 Apr 2018 08:07:55 +0000 Subject: [PATCH 2/3] add database upgrade script, update version in initial database --- sql/000_base_structure.sql | 2 +- upgrade/definitions/1.0.2_to_1.0.3.inc.php | 36 ++++++++++++++++++++++ 2 files changed, 37 insertions(+), 1 deletion(-) create mode 100644 upgrade/definitions/1.0.2_to_1.0.3.inc.php diff --git a/sql/000_base_structure.sql b/sql/000_base_structure.sql index 35a47631..88101fce 100644 --- a/sql/000_base_structure.sql +++ b/sql/000_base_structure.sql @@ -142,7 +142,7 @@ CREATE TABLE IF NOT EXISTS `settings` ( UNIQUE KEY `setting` (`name`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; -INSERT INTO `settings` (`name`, `value`) VALUES ('DB_VERSION', '1.0.2'); +INSERT INTO `settings` (`name`, `value`) VALUES ('DB_VERSION', '1.0.3'); CREATE TABLE IF NOT EXISTS `shares` ( `id` bigint(30) NOT NULL AUTO_INCREMENT, diff --git a/upgrade/definitions/1.0.2_to_1.0.3.inc.php b/upgrade/definitions/1.0.2_to_1.0.3.inc.php new file mode 100644 index 00000000..0a9cd750 --- /dev/null +++ b/upgrade/definitions/1.0.2_to_1.0.3.inc.php @@ -0,0 +1,36 @@ +getValue('DB_VERSION'); // Our actual version installed + + // Upgrade specific variables + $aSql[] = " + ALTER TABLE `statistics_shares` + CHANGE `valid` `valid` BIGINT(20) NOT NULL DEFAULT '0', + CHANGE `invalid` `invalid` BIGINT(20) NOT NULL DEFAULT '0', + CHANGE `pplns_valid` `pplns_valid` BIGINT(20) NOT NULL DEFAULT '0', + CHANGE `pplns_invalid` `pplns_invalid` BIGINT(20) NOT NULL DEFAULT '0'; + "; + $aSql[] = "UPDATE " . $setting->getTableName() . " SET value = '" . $db_version_new . "' WHERE name = 'DB_VERSION';"; + + if ($db_version_now == $db_version_old && version_compare($db_version_now, DB_VERSION, '<')) { + // Run the upgrade + echo '- Starting database migration to version ' . $db_version_new . PHP_EOL; + foreach ($aSql as $sql) { + echo '- Preparing: ' . $sql . PHP_EOL; + $stmt = $mysqli->prepare($sql); + if ($stmt && $stmt->execute()) { + echo '- success' . PHP_EOL; + } else { + echo '- failed: ' . $mysqli->error . PHP_EOL; + exit(1); + } + } + } +} +?> From 832d67f824a3e330fdc9d617d5e02ee3bcefdd8f Mon Sep 17 00:00:00 2001 From: R4SAS Date: Wed, 25 Apr 2018 10:10:17 +0000 Subject: [PATCH 3/3] bump DB version, update db upgrade script --- include/version.inc.php | 2 +- upgrade/definitions/1.0.2_to_1.0.3.inc.php | 10 +++------- 2 files changed, 4 insertions(+), 8 deletions(-) diff --git a/include/version.inc.php b/include/version.inc.php index b0cc6d0e..d95474b4 100644 --- a/include/version.inc.php +++ b/include/version.inc.php @@ -2,7 +2,7 @@ $defflip = (!cfip()) ? exit(header('HTTP/1.1 401 Unauthorized')) : 1; define('MPOS_VERSION', '1.0.9'); -define('DB_VERSION', '1.0.2'); +define('DB_VERSION', '1.0.3'); define('CONFIG_VERSION', '1.0.1'); define('HASH_VERSION', 1); diff --git a/upgrade/definitions/1.0.2_to_1.0.3.inc.php b/upgrade/definitions/1.0.2_to_1.0.3.inc.php index 0a9cd750..fddd7a35 100644 --- a/upgrade/definitions/1.0.2_to_1.0.3.inc.php +++ b/upgrade/definitions/1.0.2_to_1.0.3.inc.php @@ -9,13 +9,9 @@ function run_103() { $db_version_now = $setting->getValue('DB_VERSION'); // Our actual version installed // Upgrade specific variables - $aSql[] = " - ALTER TABLE `statistics_shares` - CHANGE `valid` `valid` BIGINT(20) NOT NULL DEFAULT '0', - CHANGE `invalid` `invalid` BIGINT(20) NOT NULL DEFAULT '0', - CHANGE `pplns_valid` `pplns_valid` BIGINT(20) NOT NULL DEFAULT '0', - CHANGE `pplns_invalid` `pplns_invalid` BIGINT(20) NOT NULL DEFAULT '0'; - "; + $aSql[] = "UPDATE `statistics_shares` SET `valid` = '0' WHERE `valid` IS NULL;"; + $aSql[] = "UPDATE `statistics_shares` SET `pplns_valid` = '0' WHERE `pplns_valid` IS NULL;"; + $aSql[] = "ALTER TABLE `statistics_shares` CHANGE `valid` `valid` BIGINT(20) NOT NULL DEFAULT '0', CHANGE `pplns_valid` `pplns_valid` BIGINT(20) NOT NULL DEFAULT '0';"; $aSql[] = "UPDATE " . $setting->getTableName() . " SET value = '" . $db_version_new . "' WHERE name = 'DB_VERSION';"; if ($db_version_now == $db_version_old && version_compare($db_version_now, DB_VERSION, '<')) {