如何将MySQL数据库表从MyIsam转换为InnoDB?
如果你从旧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。
如果您的数据库很大,您可能想先暂时开启维护模式.