Matomo database will be upgraded from version 3.11.0 to the new version 4.11.0.
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:
# These SQL queries will be executed: CREATE TABLE `matomo_locks` (`key` VARCHAR(70) NOT NULL, `value` VARCHAR(255) NULL DEFAULT NULL, `expiry_time` BIGINT UNSIGNED DEFAULT 9999999999, PRIMARY KEY ( `key` )) ENGINE=InnoDB DEFAULT CHARSET=utf8;
# These console commands will be run: ./console plugin:deactivate "ExamplePlugin" ./console plugin:deactivate "ExampleAPI"
# These SQL queries will be executed: UPDATE `matomo_option` SET option_value = 'https://download.db-ip.com/free/dbip-city-lite-2024-04.mmdb.gz' WHERE option_name = 'geoip2.loc_db_url' AND option_value = 'https://geolite.maxmind.com/download/geoip/database/GeoLite2-City.tar.gz'; UPDATE `matomo_option` SET option_value = 'https://download.db-ip.com/free/dbip-country-lite-2024-04.mmdb.gz' WHERE option_name = 'geoip2.loc_db_url' AND option_value = 'https://geolite.maxmind.com/download/geoip/database/GeoLite2-Country.tar.gz';
# These console commands will be run: ./console core:matomo4-migrate-token-auths
# These SQL queries will be executed: CREATE TABLE `matomo_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 `matomo_archive_invalidations` ADD INDEX index_idsite_dates_period_name (`idsite`, `date1`, `period`); ALTER TABLE `matomo_user` DROP COLUMN `alias`; DELETE FROM `matomo_session` WHERE length(id) > 190; ALTER TABLE `matomo_session` CHANGE `id` `id` VARCHAR(191); ALTER TABLE `matomo_site_url` CHANGE `url` `url` VARCHAR(190); ALTER TABLE `matomo_option` CHANGE `option_name` `option_name` VARCHAR(191); ALTER TABLE `matomo_log_action` CHANGE `name` `name` VARCHAR(4096); ALTER TABLE `matomo_log_conversion` CHANGE `url` `url` VARCHAR(4096); ALTER TABLE `matomo_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 `matomo_archive_numeric_2019_08` CHANGE `name` `name` VARCHAR(190); ALTER TABLE `matomo_archive_numeric_2019_09` CHANGE `name` `name` VARCHAR(190); ALTER TABLE `matomo_archive_numeric_2019_12` CHANGE `name` `name` VARCHAR(190); ALTER TABLE `matomo_archive_numeric_2020_01` CHANGE `name` `name` VARCHAR(190); ALTER TABLE `matomo_archive_numeric_2020_02` CHANGE `name` `name` VARCHAR(190); ALTER TABLE `matomo_archive_numeric_2020_03` CHANGE `name` `name` VARCHAR(190); ALTER TABLE `matomo_archive_numeric_2020_04` CHANGE `name` `name` VARCHAR(190); ALTER TABLE `matomo_archive_numeric_2020_05` CHANGE `name` `name` VARCHAR(190); ALTER TABLE `matomo_archive_numeric_2020_06` CHANGE `name` `name` VARCHAR(190); ALTER TABLE `matomo_archive_numeric_2020_07` CHANGE `name` `name` VARCHAR(190); ALTER TABLE `matomo_archive_numeric_2020_08` CHANGE `name` `name` VARCHAR(190); ALTER TABLE `matomo_archive_numeric_2020_09` CHANGE `name` `name` VARCHAR(190); ALTER TABLE `matomo_archive_numeric_2020_10` CHANGE `name` `name` VARCHAR(190); ALTER TABLE `matomo_archive_numeric_2020_11` CHANGE `name` `name` VARCHAR(190); ALTER TABLE `matomo_archive_numeric_2020_12` CHANGE `name` `name` VARCHAR(190); ALTER TABLE `matomo_archive_numeric_2021_01` CHANGE `name` `name` VARCHAR(190); ALTER TABLE `matomo_archive_numeric_2021_02` CHANGE `name` `name` VARCHAR(190); ALTER TABLE `matomo_archive_numeric_2021_03` CHANGE `name` `name` VARCHAR(190); ALTER TABLE `matomo_archive_numeric_2022_02` CHANGE `name` `name` VARCHAR(190); ALTER TABLE `matomo_archive_numeric_2022_03` CHANGE `name` `name` VARCHAR(190); ALTER TABLE `matomo_archive_numeric_2022_04` CHANGE `name` `name` VARCHAR(190); ALTER TABLE `matomo_archive_numeric_2022_05` CHANGE `name` `name` VARCHAR(190); ALTER TABLE `matomo_archive_numeric_2022_06` CHANGE `name` `name` VARCHAR(190); ALTER TABLE `matomo_archive_numeric_2022_07` CHANGE `name` `name` VARCHAR(190); ALTER TABLE `matomo_archive_numeric_2022_08` CHANGE `name` `name` VARCHAR(190); ALTER TABLE `matomo_archive_blob_2019_08` CHANGE `name` `name` VARCHAR(190); ALTER TABLE `matomo_archive_blob_2019_09` CHANGE `name` `name` VARCHAR(190); ALTER TABLE `matomo_archive_blob_2019_12` CHANGE `name` `name` VARCHAR(190); ALTER TABLE `matomo_archive_blob_2020_01` CHANGE `name` `name` VARCHAR(190); ALTER TABLE `matomo_archive_blob_2020_02` CHANGE `name` `name` VARCHAR(190); ALTER TABLE `matomo_archive_blob_2020_03` CHANGE `name` `name` VARCHAR(190); ALTER TABLE `matomo_archive_blob_2020_04` CHANGE `name` `name` VARCHAR(190); ALTER TABLE `matomo_archive_blob_2020_05` CHANGE `name` `name` VARCHAR(190); ALTER TABLE `matomo_archive_blob_2020_06` CHANGE `name` `name` VARCHAR(190); ALTER TABLE `matomo_archive_blob_2020_07` CHANGE `name` `name` VARCHAR(190); ALTER TABLE `matomo_archive_blob_2020_08` CHANGE `name` `name` VARCHAR(190); ALTER TABLE `matomo_archive_blob_2020_09` CHANGE `name` `name` VARCHAR(190); ALTER TABLE `matomo_archive_blob_2020_10` CHANGE `name` `name` VARCHAR(190); ALTER TABLE `matomo_archive_blob_2020_11` CHANGE `name` `name` VARCHAR(190); ALTER TABLE `matomo_archive_blob_2020_12` CHANGE `name` `name` VARCHAR(190); ALTER TABLE `matomo_archive_blob_2021_01` CHANGE `name` `name` VARCHAR(190); ALTER TABLE `matomo_archive_blob_2021_02` CHANGE `name` `name` VARCHAR(190); ALTER TABLE `matomo_archive_blob_2021_03` CHANGE `name` `name` VARCHAR(190); ALTER TABLE `matomo_archive_blob_2022_02` CHANGE `name` `name` VARCHAR(190); ALTER TABLE `matomo_archive_blob_2022_03` CHANGE `name` `name` VARCHAR(190); ALTER TABLE `matomo_archive_blob_2022_04` CHANGE `name` `name` VARCHAR(190); ALTER TABLE `matomo_archive_blob_2022_05` CHANGE `name` `name` VARCHAR(190); ALTER TABLE `matomo_archive_blob_2022_06` CHANGE `name` `name` VARCHAR(190); ALTER TABLE `matomo_archive_blob_2022_07` CHANGE `name` `name` VARCHAR(190); ALTER TABLE `matomo_archive_blob_2022_08` CHANGE `name` `name` VARCHAR(190); ALTER TABLE `matomo_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 `matomo_option` (option_name, option_value) VALUES ('version_log_link_visit_action.search_cat', 'VARCHAR(200) NULL'); INSERT IGNORE INTO `matomo_option` (option_name, option_value) VALUES ('version_log_link_visit_action.search_count', 'INTEGER(10) UNSIGNED NULL'); INSERT IGNORE INTO `matomo_option` (option_name, option_value) VALUES ('version_log_link_visit_action.time_dom_completion', 'MEDIUMINT(10) UNSIGNED NULL'); INSERT IGNORE INTO `matomo_option` (option_name, option_value) VALUES ('version_log_link_visit_action.time_dom_processing', 'MEDIUMINT(10) UNSIGNED NULL'); INSERT IGNORE INTO `matomo_option` (option_name, option_value) VALUES ('version_log_link_visit_action.time_network', 'MEDIUMINT(10) UNSIGNED NULL'); INSERT IGNORE INTO `matomo_option` (option_name, option_value) VALUES ('version_log_link_visit_action.time_on_load', 'MEDIUMINT(10) UNSIGNED NULL'); INSERT IGNORE INTO `matomo_option` (option_name, option_value) VALUES ('version_log_link_visit_action.time_server', 'MEDIUMINT(10) UNSIGNED NULL'); INSERT IGNORE INTO `matomo_option` (option_name, option_value) VALUES ('version_log_link_visit_action.time_transfer', 'MEDIUMINT(10) UNSIGNED NULL'); ALTER TABLE `matomo_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 `matomo_option` (option_name, option_value) VALUES ('version_log_visit.visitor_seconds_since_first', 'INT(11) UNSIGNED NULL1'); INSERT IGNORE INTO `matomo_option` (option_name, option_value) VALUES ('version_log_visit.visitor_seconds_since_order', 'INT(11) UNSIGNED NULL1'); INSERT IGNORE INTO `matomo_option` (option_name, option_value) VALUES ('version_log_visit.visitor_seconds_since_last', 'INT(11) UNSIGNED NULL'); INSERT IGNORE INTO `matomo_option` (option_name, option_value) VALUES ('version_log_visit.profilable', 'TINYINT(1) NULL'); ALTER TABLE `matomo_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 `matomo_option` (option_name, option_value) VALUES ('version_log_conversion.visitor_seconds_since_first', 'INT(11) UNSIGNED NULL'); INSERT IGNORE INTO `matomo_option` (option_name, option_value) VALUES ('version_log_conversion.visitor_seconds_since_order', 'INT(11) UNSIGNED NULL'); UPDATE matomo_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 `matomo_option` WHERE option_name IN ("geoip.updater_period", "geoip.loc_db_url", "geoip.isp_db_url", "geoip.org_db_url"); UPDATE matomo_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 matomo_log_conversion SET visitor_seconds_since_first = visitor_days_since_first * 86400,
visitor_seconds_since_order = visitor_days_since_order * 86400; ALTER TABLE `matomo_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 `matomo_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 `matomo_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 matomo_user_token_auth SET hash_algo = "sha512" where hash_algo is null or hash_algo = "" ;
# These SQL queries will be executed: UPDATE `matomo_archive_numeric_2019_08` SET `name` = 'done' WHERE `name` = 'done.'; UPDATE `matomo_archive_numeric_2019_09` SET `name` = 'done' WHERE `name` = 'done.'; UPDATE `matomo_archive_numeric_2019_12` SET `name` = 'done' WHERE `name` = 'done.'; UPDATE `matomo_archive_numeric_2020_01` SET `name` = 'done' WHERE `name` = 'done.'; UPDATE `matomo_archive_numeric_2020_02` SET `name` = 'done' WHERE `name` = 'done.'; UPDATE `matomo_archive_numeric_2020_03` SET `name` = 'done' WHERE `name` = 'done.'; UPDATE `matomo_archive_numeric_2020_04` SET `name` = 'done' WHERE `name` = 'done.'; UPDATE `matomo_archive_numeric_2020_05` SET `name` = 'done' WHERE `name` = 'done.'; UPDATE `matomo_archive_numeric_2020_06` SET `name` = 'done' WHERE `name` = 'done.'; UPDATE `matomo_archive_numeric_2020_07` SET `name` = 'done' WHERE `name` = 'done.'; UPDATE `matomo_archive_numeric_2020_08` SET `name` = 'done' WHERE `name` = 'done.'; UPDATE `matomo_archive_numeric_2020_09` SET `name` = 'done' WHERE `name` = 'done.'; UPDATE `matomo_archive_numeric_2020_10` SET `name` = 'done' WHERE `name` = 'done.'; UPDATE `matomo_archive_numeric_2020_11` SET `name` = 'done' WHERE `name` = 'done.'; UPDATE `matomo_archive_numeric_2020_12` SET `name` = 'done' WHERE `name` = 'done.'; UPDATE `matomo_archive_numeric_2021_01` SET `name` = 'done' WHERE `name` = 'done.'; UPDATE `matomo_archive_numeric_2021_02` SET `name` = 'done' WHERE `name` = 'done.'; UPDATE `matomo_archive_numeric_2021_03` SET `name` = 'done' WHERE `name` = 'done.'; UPDATE `matomo_archive_numeric_2022_02` SET `name` = 'done' WHERE `name` = 'done.'; UPDATE `matomo_archive_numeric_2022_03` SET `name` = 'done' WHERE `name` = 'done.'; UPDATE `matomo_archive_numeric_2022_04` SET `name` = 'done' WHERE `name` = 'done.'; UPDATE `matomo_archive_numeric_2022_05` SET `name` = 'done' WHERE `name` = 'done.'; UPDATE `matomo_archive_numeric_2022_06` SET `name` = 'done' WHERE `name` = 'done.'; UPDATE `matomo_archive_numeric_2022_07` SET `name` = 'done' WHERE `name` = 'done.'; UPDATE `matomo_archive_numeric_2022_08` SET `name` = 'done' WHERE `name` = 'done.'; ALTER TABLE `matomo_segment` ADD COLUMN `hash` CHAR(32) NULL AFTER `definition`; ALTER TABLE `matomo_brute_force_log` ADD COLUMN `login` VARCHAR(100) NULL;
# These console commands will be run: ./console config:set --section="General" --key="login_allow_logme" --value="1"
# These SQL queries will be executed: ALTER TABLE `matomo_session` CHANGE `data` `data` MEDIUMTEXT;
# These console commands will be run: ./console plugin:activate "CoreVue"
The database upgrade process may take a while, so please be patient.
File integrity check failed and reported some errors. You should fix this issue and then refresh this page until it shows no error.
File integrity check failed and reported some errors. You should fix this issue and then refresh this page until it shows no error.
Directories were found in your Matomo, but we didn't expect them. --> Please delete these directories to prevent errors. <--
Directory to delete: libs/bower_components
To delete all these directories at once, you can run this command: rm -Rf /var/www/html/libs/bower_components
Files were found in your Matomo, but we didn't expect them. --> Please delete these files to prevent errors. <--
File to delete: bower.json File to delete: composer.json File to delete: composer.lock File to delete: config/environment/test.php File to delete: config/environment/ui-test.php File to delete: js/piwik-min.js File to delete: js/piwik.js.orig File to delete: misc/composer/build-xhprof.sh File to delete: misc/composer/clean-xhprof.sh File to delete: misc/gpl-3.0.txt File to delete: misc/others/ExamplePiwikTracker.php File to delete: misc/others/uninstall-delete-piwik-directory.php File to delete: vendor/davaxi/sparkline/.codeclimate.yml File to delete: vendor/php-di/php-di/.phpstorm.meta.php File to delete: vendor/twig/twig/.php_cs.dist
To delete all these files at once, you can run this command: rm "/var/www/html/bower.json" "/var/www/html/composer.json" "/var/www/html/composer.lock" "/var/www/html/config/environment/test.php" "/var/www/html/config/environment/ui-test.php" "/var/www/html/js/piwik-min.js" "/var/www/html/js/piwik.js.orig" "/var/www/html/misc/composer/build-xhprof.sh" "/var/www/html/misc/composer/clean-xhprof.sh" "/var/www/html/misc/gpl-3.0.txt" "/var/www/html/misc/others/ExamplePiwikTracker.php" "/var/www/html/misc/others/uninstall-delete-piwik-directory.php" "/var/www/html/vendor/davaxi/sparkline/.codeclimate.yml" "/var/www/html/vendor/php-di/php-di/.phpstorm.meta.php" "/var/www/html/vendor/twig/twig/.php_cs.dist"