If you are not able to use the command line updater and if Piwik fails to upgrade (due to a timeout of the database, a browser timeout, or any other issue), you could manually execute the SQL queries to update Piwik.
› Click here to view and copy the list of SQL queries that will get executed
# Note: if you manually execute these queries, it is expected that some of them fail. In this case, simply ignore the errors, and run the next ones in the list.
ALTER TABLE `piwik_log_visit`
DROP `visit_server_date`,
DROP INDEX `index_idsite_date_config`,
DROP INDEX `index_idsite_datetime_config`,
ADD `visit_entry_idaction_name` INT UNSIGNED NOT NULL AFTER `visit_entry_idaction_url`,
ADD `visit_exit_idaction_name` INT UNSIGNED NOT NULL AFTER `visit_exit_idaction_url`,
CHANGE `visit_exit_idaction_url` `visit_exit_idaction_url` INT UNSIGNED NOT NULL,
CHANGE `visit_entry_idaction_url` `visit_entry_idaction_url` INT UNSIGNED NOT NULL,
CHANGE `referer_type` `referer_type` TINYINT UNSIGNED NULL DEFAULT NULL,
ADD `idvisitor` BINARY(8) NOT NULL AFTER `idsite`,
ADD visitor_count_visits SMALLINT(5) UNSIGNED NOT NULL AFTER `visitor_returning`,
ADD visitor_days_since_last SMALLINT(5) UNSIGNED NOT NULL,
ADD visitor_days_since_first SMALLINT(5) UNSIGNED NOT NULL,
ADD `config_id` BINARY(8) NOT NULL AFTER `config_md5config`,
ADD custom_var_k1 VARCHAR(50) DEFAULT NULL,
ADD custom_var_v1 VARCHAR(50) DEFAULT NULL,
ADD custom_var_k2 VARCHAR(50) DEFAULT NULL,
ADD custom_var_v2 VARCHAR(50) DEFAULT NULL,
ADD custom_var_k3 VARCHAR(50) DEFAULT NULL,
ADD custom_var_v3 VARCHAR(50) DEFAULT NULL,
ADD custom_var_k4 VARCHAR(50) DEFAULT NULL,
ADD custom_var_v4 VARCHAR(50) DEFAULT NULL,
ADD custom_var_k5 VARCHAR(50) DEFAULT NULL,
ADD custom_var_v5 VARCHAR(50) DEFAULT NULL
;
ALTER TABLE `piwik_log_link_visit_action`
ADD `idsite` INT( 10 ) UNSIGNED NOT NULL AFTER `idlink_va` ,
ADD `server_time` DATETIME NOT NULL AFTER `idsite`,
ADD `idvisitor` BINARY(8) NOT NULL AFTER `idsite`,
ADD `idaction_name_ref` INT UNSIGNED NOT NULL AFTER `idaction_name`,
ADD INDEX `index_idsite_servertime` ( `idsite` , `server_time` )
;
ALTER TABLE `piwik_log_conversion`
DROP `referer_idvisit`,
ADD `idvisitor` BINARY(8) NOT NULL AFTER `idsite`,
ADD visitor_count_visits SMALLINT(5) UNSIGNED NOT NULL,
ADD visitor_days_since_first SMALLINT(5) UNSIGNED NOT NULL,
ADD custom_var_k1 VARCHAR(50) DEFAULT NULL,
ADD custom_var_v1 VARCHAR(50) DEFAULT NULL,
ADD custom_var_k2 VARCHAR(50) DEFAULT NULL,
ADD custom_var_v2 VARCHAR(50) DEFAULT NULL,
ADD custom_var_k3 VARCHAR(50) DEFAULT NULL,
ADD custom_var_v3 VARCHAR(50) DEFAULT NULL,
ADD custom_var_k4 VARCHAR(50) DEFAULT NULL,
ADD custom_var_v4 VARCHAR(50) DEFAULT NULL,
ADD custom_var_k5 VARCHAR(50) DEFAULT NULL,
ADD custom_var_v5 VARCHAR(50) DEFAULT NULL
;
UPDATE piwik_log_visit
SET idvisitor = binary(unhex(substring(visitor_idcookie,1,16))),
config_id = binary(unhex(substring(config_md5config,1,16)))
;
UPDATE piwik_log_conversion
SET idvisitor = binary(unhex(substring(visitor_idcookie,1,16)))
;
ALTER TABLE `piwik_log_visit`
DROP visitor_idcookie,
DROP config_md5config
;
ALTER TABLE `piwik_log_conversion`
DROP visitor_idcookie
;
ALTER TABLE `piwik_log_visit`
ADD INDEX `index_idsite_datetime_config` (idsite, visit_last_action_time, config_id)
;
UPDATE piwik_log_link_visit_action as action,
piwik_log_visit as visit
SET action.idsite = visit.idsite,
action.server_time = visit.visit_last_action_time,
action.idvisitor = visit.idvisitor
WHERE action.idvisit=visit.idvisit
;
ALTER TABLE `piwik_option` ADD INDEX ( `autoload` ) ;
ALTER TABLE `piwik_site` ADD `group` VARCHAR( 250 ) NOT NULL;
UPDATE piwik_option
SET option_value = "1.2-rc2"
WHERE option_name = "version_core";
Ready to go?
The database upgrade process may take a while, so please be patient.