如何为数据库中的每个表运行以下命令:
ALTER table [table_name] type=innodb;
我不想为每个表手动运行它,而是为数据库中的所有表运行它。顺便说一句:如果您对我为什么运行它感到好奇:http ://bugs.mysql.com/bug.php?id=1341 & http://bugs.mysql.com/bug.php?id=1287
如何为数据库中的每个表运行以下命令:
ALTER table [table_name] type=innodb;
我不想为每个表手动运行它,而是为数据库中的所有表运行它。顺便说一句:如果您对我为什么运行它感到好奇:http ://bugs.mysql.com/bug.php?id=1341 & http://bugs.mysql.com/bug.php?id=1287
假设您在 my.cnf 上设置了凭据和连接信息,这样的命令可能会执行您想要的操作。
将 database_name 替换为您的数据库名称。
至于你的主要问题。听起来你想在让你的 innodb 表变大后回收空间。就像 bug 说的那样,处理这个问题的唯一安全方法是使用 mysqldump 导出所有内容。删除文件,然后恢复。
正如那篇文章所指出的。您可以启用
innodb_file_per_table
选项到您的服务器的 my.cnf 将使每个文件作为一个单独的文件存在。这样,可以通过删除/恢复问题表而不是所有内容来回收空间。关于 Zoredache 的回答(这对我非常有用,谢谢):--skip-column-names应该用于删除标题。
我不知道您使用的是哪种语言,但您可能只需要运行:
然后遍历结果集,为每个结果集生成一个查询。