Matomo database will be upgraded from version 3.13.6 to the new version 4.2.1.
The following dimensions will be updated: log_link_visit_action.idaction_product_cat, log_link_visit_action.idaction_product_cat2, log_link_visit_action.idaction_product_cat3, log_link_visit_action.idaction_product_cat4, log_link_visit_action.idaction_product_cat5, log_link_visit_action.idaction_product_name, log_link_visit_action.idaction_product_sku, log_link_visit_action.product_price, log_link_visit_action.search_cat, log_link_visit_action.search_count, log_link_visit_action.time_dom_completion, log_link_visit_action.time_dom_processing, log_link_visit_action.time_network, log_link_visit_action.time_on_load, log_link_visit_action.time_server, log_link_visit_action.time_transfer, log_visit.config_browser_name, log_visit.config_client_type, log_visit.profilable, log_visit.referer_name, log_visit.referer_url, log_visit.visit_total_interactions, log_visit.visitor_count_visits, log_visit.visitor_seconds_since_first, log_visit.visitor_seconds_since_last, log_visit.visitor_seconds_since_order.
Important notes for large Matomo installations
If you have a large Matomo database, updates might take too long to run in the browser. In this situation, you can execute the updates from your command line:
php /var/www/html/console core:update
If you manage a high traffic Matomo server, we recommend to momentarily disable visitor Tracking and put the Matomo User Interface in maintenance mode.
FYI: these are the SQL queries and console commands that will be executed to upgrade your database to Matomo 4.2.1
› Click here to view and copy the list of SQL queries and console commands that will get executed
# These console commands will be run:
./console core:matomo4-migrate-token-auths
# These SQL queries will be executed:
CREATE TABLE `m_archive_invalidations` (`idinvalidation` BIGINT UNSIGNED NOT NULL AUTO_INCREMENT, `idarchive` INTEGER UNSIGNED NULL, `name` VARCHAR(255) NOT NULL, `idsite` INTEGER NOT NULL, `date1` DATE NOT NULL, `date2` DATE NOT NULL, `period` TINYINT UNSIGNED NOT NULL, `ts_invalidated` DATETIME NOT NULL, `status` TINYINT(1) UNSIGNED DEFAULT 0, `report` VARCHAR(255) NULL, PRIMARY KEY ( `idinvalidation` )) ENGINE=InnoDB DEFAULT CHARSET=utf8;
ALTER TABLE `m_archive_invalidations` ADD INDEX index_idsite_dates_period_name (`idsite`, `date1`, `period`);
ALTER TABLE `m_user` DROP COLUMN `alias`;
DELETE FROM `m_session` WHERE length(id) > 190;
ALTER TABLE `m_session` CHANGE `id` `id` VARCHAR(191);
ALTER TABLE `m_site_url` CHANGE `url` `url` VARCHAR(190);
ALTER TABLE `m_option` CHANGE `option_name` `option_name` VARCHAR(191);
ALTER TABLE `m_log_action` CHANGE `name` `name` VARCHAR(4096);
ALTER TABLE `m_log_conversion` CHANGE `url` `url` VARCHAR(4096);
ALTER TABLE `m_log_link_visit_action` CHANGE `interaction_position` `pageview_position` MEDIUMINT UNSIGNED DEFAULT NULL;
# These console commands will be run:
./console plugin:activate "BulkTracking"
./console plugin:deactivate "CustomPiwikJs"
./console plugin:uninstall "CustomPiwikJs"
# These SQL queries will be executed:
ALTER TABLE `m_archive_numeric_2020_01` CHANGE `name` `name` VARCHAR(190);
ALTER TABLE `m_archive_numeric_2020_02` CHANGE `name` `name` VARCHAR(190);
ALTER TABLE `m_archive_numeric_2020_03` CHANGE `name` `name` VARCHAR(190);
ALTER TABLE `m_archive_numeric_2020_04` CHANGE `name` `name` VARCHAR(190);
ALTER TABLE `m_archive_numeric_2020_05` CHANGE `name` `name` VARCHAR(190);
ALTER TABLE `m_archive_numeric_2020_07` CHANGE `name` `name` VARCHAR(190);
ALTER TABLE `m_archive_numeric_2020_08` CHANGE `name` `name` VARCHAR(190);
ALTER TABLE `m_archive_numeric_2020_09` CHANGE `name` `name` VARCHAR(190);
ALTER TABLE `m_archive_numeric_2020_10` CHANGE `name` `name` VARCHAR(190);
ALTER TABLE `m_archive_numeric_2020_11` CHANGE `name` `name` VARCHAR(190);
ALTER TABLE `m_archive_numeric_2020_12` CHANGE `name` `name` VARCHAR(190);
ALTER TABLE `m_archive_numeric_2021_01` CHANGE `name` `name` VARCHAR(190);
ALTER TABLE `m_archive_blob_2020_01` CHANGE `name` `name` VARCHAR(190);
ALTER TABLE `m_archive_blob_2020_02` CHANGE `name` `name` VARCHAR(190);
ALTER TABLE `m_archive_blob_2020_03` CHANGE `name` `name` VARCHAR(190);
ALTER TABLE `m_archive_blob_2020_04` CHANGE `name` `name` VARCHAR(190);
ALTER TABLE `m_archive_blob_2020_05` CHANGE `name` `name` VARCHAR(190);
ALTER TABLE `m_archive_blob_2020_07` CHANGE `name` `name` VARCHAR(190);
ALTER TABLE `m_archive_blob_2020_08` CHANGE `name` `name` VARCHAR(190);
ALTER TABLE `m_archive_blob_2020_09` CHANGE `name` `name` VARCHAR(190);
ALTER TABLE `m_archive_blob_2020_10` CHANGE `name` `name` VARCHAR(190);
ALTER TABLE `m_archive_blob_2020_11` CHANGE `name` `name` VARCHAR(190);
ALTER TABLE `m_archive_blob_2020_12` CHANGE `name` `name` VARCHAR(190);
ALTER TABLE `m_archive_blob_2021_01` CHANGE `name` `name` VARCHAR(190);
ALTER TABLE `m_log_link_visit_action` ADD COLUMN `search_cat` VARCHAR(200) NULL, ADD COLUMN `search_count` INTEGER(10) UNSIGNED NULL, ADD COLUMN `time_dom_completion` MEDIUMINT(10) UNSIGNED NULL, ADD COLUMN `time_dom_processing` MEDIUMINT(10) UNSIGNED NULL, ADD COLUMN `time_network` MEDIUMINT(10) UNSIGNED NULL, ADD COLUMN `time_on_load` MEDIUMINT(10) UNSIGNED NULL, ADD COLUMN `time_server` MEDIUMINT(10) UNSIGNED NULL, ADD COLUMN `time_transfer` MEDIUMINT(10) UNSIGNED NULL;
INSERT IGNORE INTO `m_option` (option_name, option_value) VALUES ('version_log_link_visit_action.search_cat', 'VARCHAR(200) NULL');
INSERT IGNORE INTO `m_option` (option_name, option_value) VALUES ('version_log_link_visit_action.search_count', 'INTEGER(10) UNSIGNED NULL');
INSERT IGNORE INTO `m_option` (option_name, option_value) VALUES ('version_log_link_visit_action.time_dom_completion', 'MEDIUMINT(10) UNSIGNED NULL');
INSERT IGNORE INTO `m_option` (option_name, option_value) VALUES ('version_log_link_visit_action.time_dom_processing', 'MEDIUMINT(10) UNSIGNED NULL');
INSERT IGNORE INTO `m_option` (option_name, option_value) VALUES ('version_log_link_visit_action.time_network', 'MEDIUMINT(10) UNSIGNED NULL');
INSERT IGNORE INTO `m_option` (option_name, option_value) VALUES ('version_log_link_visit_action.time_on_load', 'MEDIUMINT(10) UNSIGNED NULL');
INSERT IGNORE INTO `m_option` (option_name, option_value) VALUES ('version_log_link_visit_action.time_server', 'MEDIUMINT(10) UNSIGNED NULL');
INSERT IGNORE INTO `m_option` (option_name, option_value) VALUES ('version_log_link_visit_action.time_transfer', 'MEDIUMINT(10) UNSIGNED NULL');
ALTER TABLE `m_log_visit` ADD COLUMN `visitor_seconds_since_first` INT(11) UNSIGNED NULL, ADD COLUMN `visitor_seconds_since_order` INT(11) UNSIGNED NULL, ADD COLUMN `visitor_seconds_since_last` INT(11) UNSIGNED NULL, ADD COLUMN `profilable` TINYINT(1) NULL;
INSERT IGNORE INTO `m_option` (option_name, option_value) VALUES ('version_log_visit.visitor_seconds_since_first', 'INT(11) UNSIGNED NULL1');
INSERT IGNORE INTO `m_option` (option_name, option_value) VALUES ('version_log_visit.visitor_seconds_since_order', 'INT(11) UNSIGNED NULL1');
INSERT IGNORE INTO `m_option` (option_name, option_value) VALUES ('version_log_visit.visitor_seconds_since_last', 'INT(11) UNSIGNED NULL');
INSERT IGNORE INTO `m_option` (option_name, option_value) VALUES ('version_log_visit.profilable', 'TINYINT(1) NULL');
ALTER TABLE `m_log_conversion` ADD COLUMN `visitor_seconds_since_first` INT(11) UNSIGNED NULL, ADD COLUMN `visitor_seconds_since_order` INT(11) UNSIGNED NULL;
INSERT IGNORE INTO `m_option` (option_name, option_value) VALUES ('version_log_conversion.visitor_seconds_since_first', 'INT(11) UNSIGNED NULL');
INSERT IGNORE INTO `m_option` (option_name, option_value) VALUES ('version_log_conversion.visitor_seconds_since_order', 'INT(11) UNSIGNED NULL');
UPDATE m_log_link_visit_action SET search_cat = if(custom_var_k4 = '_pk_scat', custom_var_v4, search_cat), search_count = if(custom_var_k5 = '_pk_scount', custom_var_v5, search_count) WHERE custom_var_k4 = '_pk_scat' or custom_var_k5 = '_pk_scount';
DELETE FROM `m_option` WHERE option_name IN ("geoip.updater_period", "geoip.loc_db_url", "geoip.isp_db_url", "geoip.org_db_url");
UPDATE m_log_visit SET visitor_seconds_since_first = visitor_days_since_first * 86400,
visitor_seconds_since_order = visitor_days_since_order * 86400,
visitor_seconds_since_last = visitor_days_since_last * 86400;
UPDATE m_log_conversion SET visitor_seconds_since_first = visitor_days_since_first * 86400,
visitor_seconds_since_order = visitor_days_since_order * 86400;
ALTER TABLE `m_log_visit` DROP COLUMN `config_gears`, DROP COLUMN `config_director`, DROP COLUMN `visitor_days_since_first`, DROP COLUMN `visitor_days_since_order`, DROP COLUMN `visitor_days_since_last`;
ALTER TABLE `m_log_conversion` DROP COLUMN `visitor_days_since_first`, DROP COLUMN `visitor_days_since_order`;
# These console commands will be run:
./console config:set --section="Tracker" --key="ignore_visits_cookie_name" --value="piwik_ignore"
./console plugin:activate "PagePerformance"
./console config:set --section="General" --key="login_allowlist_apply_to_reporting_api_requests" --value="0"
# These SQL queries will be executed:
ALTER TABLE `m_archive_invalidations` ADD COLUMN `ts_started` DATETIME NULL;
# These console commands will be run:
./console plugin:deactivate "ExampleTheme"
# These SQL queries will be executed:
UPDATE m_user_token_auth SET hash_algo = "sha512" where hash_algo is null or hash_algo = "" ;
# These console commands will be run:
./console plugin:uninstall "ExampleTheme"
./console plugin:deactivate "ExamplePlugin"
./console plugin:deactivate "ExampleLogTables"
./console plugin:deactivate "ExampleUI"
./console plugin:deactivate "ExampleReport"
./console plugin:deactivate "ExampleAPI"
./console plugin:deactivate "ExampleCommand"
./console plugin:deactivate "ExampleSettingsPlugin"
./console plugin:deactivate "ExampleTracker"
./console plugin:deactivate "ExampleVisualization"
./console plugin:uninstall "ExamplePlugin"
./console plugin:uninstall "ExampleLogTables"
./console plugin:uninstall "ExampleUI"
./console plugin:uninstall "ExampleReport"
./console plugin:uninstall "ExampleAPI"
./console plugin:uninstall "ExampleCommand"
./console plugin:uninstall "ExampleSettingsPlugin"
./console plugin:uninstall "ExampleTracker"
./console plugin:uninstall "ExampleVisualization"
# These SQL queries will be executed:
UPDATE `m_archive_numeric_2020_01` SET `name` = 'done' WHERE `name` = 'done.';
UPDATE `m_archive_numeric_2020_02` SET `name` = 'done' WHERE `name` = 'done.';
UPDATE `m_archive_numeric_2020_03` SET `name` = 'done' WHERE `name` = 'done.';
UPDATE `m_archive_numeric_2020_04` SET `name` = 'done' WHERE `name` = 'done.';
UPDATE `m_archive_numeric_2020_05` SET `name` = 'done' WHERE `name` = 'done.';
UPDATE `m_archive_numeric_2020_07` SET `name` = 'done' WHERE `name` = 'done.';
UPDATE `m_archive_numeric_2020_08` SET `name` = 'done' WHERE `name` = 'done.';
UPDATE `m_archive_numeric_2020_09` SET `name` = 'done' WHERE `name` = 'done.';
UPDATE `m_archive_numeric_2020_10` SET `name` = 'done' WHERE `name` = 'done.';
UPDATE `m_archive_numeric_2020_11` SET `name` = 'done' WHERE `name` = 'done.';
UPDATE `m_archive_numeric_2020_12` SET `name` = 'done' WHERE `name` = 'done.';
UPDATE `m_archive_numeric_2021_01` SET `name` = 'done' WHERE `name` = 'done.';
ALTER TABLE `m_log_visit` ADD COLUMN `profilable` TINYINT(1) NULL, ADD COLUMN `visitor_seconds_since_first` INT(11) UNSIGNED NULL, ADD COLUMN `visitor_seconds_since_order` INT(11) UNSIGNED NULL, MODIFY COLUMN `visitor_count_visits` INT(11) UNSIGNED NOT NULL DEFAULT 0, MODIFY COLUMN `visit_total_interactions` MEDIUMINT UNSIGNED DEFAULT 0, MODIFY COLUMN `referer_name` VARCHAR(255) NULL, MODIFY COLUMN `referer_url` VARCHAR(1500) NULL, MODIFY COLUMN `config_browser_name` VARCHAR(40) NULL, ADD COLUMN `config_client_type` TINYINT( 1 ) NULL DEFAULT NULL, ADD COLUMN `visitor_seconds_since_last` INT(11) UNSIGNED NULL;
ALTER TABLE `m_log_conversion` ADD COLUMN `visitor_seconds_since_first` INT(11) UNSIGNED NULL, ADD COLUMN `visitor_seconds_since_order` INT(11) UNSIGNED NULL, MODIFY COLUMN `visitor_count_visits` INT(11) UNSIGNED NOT NULL DEFAULT 0, MODIFY COLUMN `referer_name` VARCHAR(255) NULL, ADD COLUMN `config_browser_name` VARCHAR(40) NULL, ADD COLUMN `config_client_type` TINYINT( 1 ) NULL DEFAULT NULL;
ALTER TABLE `m_log_link_visit_action` ADD COLUMN `search_cat` VARCHAR(200) NULL, ADD COLUMN `search_count` INTEGER(10) UNSIGNED NULL, ADD COLUMN `idaction_product_cat` INT(10) UNSIGNED NULL, ADD COLUMN `idaction_product_cat2` INT(10) UNSIGNED NULL, ADD COLUMN `idaction_product_cat3` INT(10) UNSIGNED NULL, ADD COLUMN `idaction_product_cat4` INT(10) UNSIGNED NULL, ADD COLUMN `idaction_product_cat5` INT(10) UNSIGNED NULL, ADD COLUMN `idaction_product_name` INT(10) UNSIGNED NULL, ADD COLUMN `product_price` DOUBLE NULL, ADD COLUMN `idaction_product_sku` INT(10) UNSIGNED NULL, ADD COLUMN `time_dom_completion` MEDIUMINT(10) UNSIGNED NULL, ADD COLUMN `time_dom_processing` MEDIUMINT(10) UNSIGNED NULL, ADD COLUMN `time_network` MEDIUMINT(10) UNSIGNED NULL, ADD COLUMN `time_on_load` MEDIUMINT(10) UNSIGNED NULL, ADD COLUMN `time_server` MEDIUMINT(10) UNSIGNED NULL, ADD COLUMN `time_transfer` MEDIUMINT(10) UNSIGNED NULL;
Need help upgrading Matomo?
If you need support to upgrade your Matomo, the creators of Matomo are here to help you make the Matomo upgrade a success and provide all instructions, best practises and ongoing support. Contact the Matomo experts to get started upgrading your Matomo safely.
Ready to go?
The database upgrade process may take a while, so please be patient.