Matomo (v3.11.0) with FormAnalytics (v3.1.25) explodes in glittery dust
Downloaded, unzipped and modified matomo/config/config.ini.php:
[Plugins]
..
..
Plugins[] = "MultiChannelConversionAttribution"
Plugins[] = "HeatmapSessionRecording"
Plugins[] = "FormAnalytics"
[PluginsInstalled]
..
..
PluginsInstalled[] = "MultiChannelConversionAttribution"
PluginsInstalled[] = "HeatmapSessionRecording"
PluginsInstalled[] = "FormAnalytics"
Explodes in glittery dust in the browser:
An exception has been thrown during the rendering of a template (âSQLSTATE[42S02]: Base table or view not found: 1146 Table âpiwik.piwik_site_formâ doesnât existâ).
in /var/www/aaaaaaaa/matomo/plugins/CoreHome/templates/getDefaultIndexView.twig line 7
With a similar message from matomo/tmp/logs/matomo.log:
ERROR FormAnalytics[2019-10-24 07:09:10 UTC] [a536d] Uncaught exception in API: /var/www/aaaaaaaa/matomo/libs/Zend/Db/Statement/Pdo.php(234): SQLSTATE[42S02]: Base table or view not found: 1146 Table âpiwik.piwik_site_formâ doesnât exist
I see no reference to the table site_form in the Matomo source:
But I do see several references to it in:
[root@someserver /var/www/aaaaaaaa/matomo/plugins]# grep -r site_form *
FormAnalytics/Updates/3.1.4.php: $migration = $this->migration->db->changeColumnType('site_form', 'fields', 'MEDIUMTEXT NULL');
FormAnalytics/Dao/LogForm.php: $sql = sprintf('SELECT DISTINCT log_form.idlogform FROM %s log_form LEFT OUTER JOIN %s site_form ON log_form.idsiteform = site_form.idsiteform WHERE site_form.idsiteform IS NULL or site_form.`status` = "%s" LIMIT %s',
FormAnalytics/Dao/LogForm.php: $this->tablePrefixed, Common::prefixTable('site_form'), FormsModel::STATUS_DELETED, (int) $numMaxEntries);
FormAnalytics/Dao/LogForm.php: $select = sprintf('site_form.name as label,
FormAnalytics/Dao/LogForm.php: site_form.idsiteform,
FormAnalytics/Dao/LogForm.php: $where = sprintf('%1$s.idsite = ? and %1$s.form_last_action_time > ? and site_form.`status` = \'running\' ', $this->table);
FormAnalytics/Dao/LogForm.php: $groupBy = 'site_form.name';
FormAnalytics/Dao/LogForm.php: 'table' => 'site_form',
FormAnalytics/Dao/LogForm.php: 'joinOn' => 'site_form.idsiteform = log_form.idsiteform'
FormAnalytics/Dao/SiteForm.php: private $table = 'site_form';
FormAnalytics/VisitorDetails.php: site_form.name AS form_name,
FormAnalytics/VisitorDetails.php: site_form.idsiteform AS form_id,
FormAnalytics/VisitorDetails.php: site_form.status AS form_status,
FormAnalytics/VisitorDetails.php: LEFT JOIN " . Common::prefixTable('site_form') . " AS site_form
FormAnalytics/VisitorDetails.php: ON log_form.idsiteform = site_form.idsiteform
FormAnalytics/VisitorDetails.php: WHERE log_form.idvisit IN (%s) AND log_form.time_spent > 0 AND (site_form.auto_created = 0 OR site_form.status != '". FormsModel::STATUS_DELETED ."')
FormAnalytics/Segment.php: $sql = 'SELECT idsiteform FROM ' . Common::prefixTable('site_form') . " as site_form WHERE site_form.status = '" . FormsModel::STATUS_RUNNING . "' AND " ;
Itâs like the plugin is missing the first step to launch a âCREATE TABLEâ statement. Any advice? This setup do not have access to the internet. Plugins installed by hand.