Zum Inhalt

Schlagwort: MySQL

Piwik Upgrade von Version 2 auf 3 schlägt wegen MySQL Problemen fehl

Wenn ihr euer Piwik 2 auf Version 3 upgraden wollt lauft ihr unter Umständen in Probleme beim Updaten der MySQL Datenbank rein und der Prozess bricht ab. Dies wird durch eine fehlende Tabelle und eine fehlende Spalte in einer Tabelle verursacht. Hier ist ein Beispiel, wie man das Problem lösen kann, basierend auf einer Piwik 2 Installation auf einem Server mit Plesk 17. Wie immer, denkt daran, dass ihr ein Backup von eurer Datenbank macht, bevor ihr darin händisch etwas verändert.

Die erste Fehlermeldung, die ihr bekommt lautet:

Kritischer Fehler während der Aktualisierung:
SQLSTATE[42S02]: Base table or view not found: 1146 Table ‚piwik_d.plugin_setting‘ doesn’t exist

Diese kann man lösen, in dem man die Tabelle manuell in der MySQL Datenbank erzeugt:

CREATE TABLE plugin_setting (
plugin_name VARCHAR(60) NOT NULL,
setting_name VARCHAR(255) NOT NULL,
setting_value LONGTEXT NOT NULL,
user_login VARCHAR(100) NOT NULL DEFAULT '',
INDEX(plugin_name, user_login)
) ENGINE=Innodb DEFAULT CHARSET=utf8

Wenn man danach den Upgrade Prozess noch einmal antriggert, erfolt eine zweite Fehlermeldung:

Kritischer Fehler während der Aktualisierung:
SQLSTATE[42S22]: Column not found: 1054 Unknown column ‚plugin_name‘ in ‚where clause‘

Da sich in meinem Fall keine Daten in der Tabelle befanden, konnte ich die Tabelle komplett droppen und einfach neu erzeugen:

CREATE TABLE site_setting (
idsite INTEGER(10) UNSIGNED NOT NULL,
plugin_name VARCHAR(60) NOT NULL,
setting_name VARCHAR(255) NOT NULL,
setting_value LONGTEXT NOT NULL,
INDEX(idsite, plugin_name)
) ENGINE=INNODB DEFAULT CHARSET=utf8

Falls sich Daten in der Tabelle befinden sollte, versucht die Spalte plugin_name manuell zu erzeugen, um das Problem zu beheben.

Das Upgrade sollte jetzt durchlaufen und danach könnt ihr Piwik 3 benutzen.

Piwik Upgrade from version 2 to 3 fails due to MySQL problems

If you want to upgrade your existing Piwik 2 installation to Piwik 3 you might run into different error messages during this process which will prevent you from performing the upgrade. This is caused by a missing table and a missing column in the existing database. Here is an example how to solve the problems based on a Piwik 2 Installation on Plesk 17. Please be sure to backup your database before performing any manual operations.

The first error you get is:

Kritischer Fehler während der Aktualisierung:
SQLSTATE[42S02]: Base table or view not found: 1146 Table ‚piwik_d.plugin_setting‘ doesn’t exist

This can be resolved by performing the following SQL query manually:

CREATE TABLE plugin_setting (
plugin_name VARCHAR(60) NOT NULL,
setting_name VARCHAR(255) NOT NULL,
setting_value LONGTEXT NOT NULL,
user_login VARCHAR(100) NOT NULL DEFAULT '',
INDEX(plugin_name, user_login)
) ENGINE=Innodb DEFAULT CHARSET=utf8

If you trigger the upgrade process again you might run into a second problem:

Kritischer Fehler während der Aktualisierung:
SQLSTATE[42S22]: Column not found: 1054 Unknown column ‚plugin_name‘ in ‚where clause‘

You can resolve this issue by dropping the table site_settings and create it completely new:

CREATE TABLE site_setting (
idsite INTEGER(10) UNSIGNED NOT NULL,
plugin_name VARCHAR(60) NOT NULL,
setting_name VARCHAR(255) NOT NULL,
setting_value LONGTEXT NOT NULL,
INDEX(idsite, plugin_name)
) ENGINE=INNODB DEFAULT CHARSET=utf8

In my case there was no data in this table so if you have data in it, don’t drop this table but try to add the column plugin_name manually.

After that the Piwik Upgrade should run through and you can use version 3 now.

Update to MySQL 5.6 on Debian 7 running Plesk 12.5

First of all, create a backup of your server or VM in case that anything will go wrong during the update process or any applications will not work anymore after updating your MySQL Server.

After that create a copy of your existing MySQL config as a backup:
cp /etc/mysql/my.cnf{,_original}

Now browse to http://dev.mysql.com/downloads/repo/apt/ and check which is the latest available MySQL version package. In our case mysql-apt-config_0.7.3-1_all.deb. Now log in to your server via SSH with root access. Download and install the tool:
wget http://dev.mysql.com/get/mysql-apt-config_0.7.3-1_all.deb
dpkg -i mysql-apt-config_0.7.3-1_all.deb

During the installation you will be asked which version you want to install so you can decide to update to MySQL 5.6 or 5.7.

After the installation wizard is finished, perform the following commands
apt-get update
apt-get install mysql-server

If you are being asked to update your my.cnf, select yes. That’s it.