如果你从旧Matomo (Piwik)版本(Matomo 2.1.0之前)升级,你可能仍然在使用Myisam表,并得到诸如“Waiting for table level lock”之类的错误。

发生这样的错误是因为你的表还没有在InnoDB引擎中。可以使用特定的SQL命令转换表。请注意,将大表从Myisam转换到InnoDB将花费一些时间,并且需要大量的RAM和空间/ tmp分区。

运行如下SQL查询:

SET @DATABASE_NAME = 'name_of_your_matomo_db';SELECT CONCAT('ALTER TABLE ", table_name, ' ENGINE=InnoDB;') AS sql_statements FROM information_schema。TABLE AS tb WHERE ' ENGINE ' = 'MyISAM' AND ' TABLE_TYPE ' = 'BASE TABLE'

运行此SQL查询将生成一个SQL ALTER语句,然后执行该语句将所有Matomo数据库表从Myisam转换为InnoDB。

复制粘贴这个SQL查询的输出,并在你的Matomo数据库中运行,你所有的表都将升级到InnoDB。

如果您的数据库很大,您可能想先暂时开启维护模式

以前的常见问题我得到的错误:error 1034 (HY000):错误的密钥文件表' matomo_log_visit ';表matomo_log_x被标记为崩溃,最后(自动?)修复失败
Baidu