将Mysql表从MyISAM更改为InnoDB

将Mysql表从MyISAM更改为InnoDB,mysql,Mysql,我有一个项目,我已经运行了一段时间,这是一个更大的数据库约6GB。1个数据库表不断损坏,或者现在更频繁地崩溃 表:19779121 MyISAM utf8_unicode_ci 5,4 GB 该表非常大,可以存储用户统计信息,每个用户都可以访问我的网站。所以很多东西都是从那张表上读写的 据我所知,对于大表的建议是将MyISAM更改为InnoDB,以防止这种情况发生,因为InnoDB可以更快更好地处理大量数据 如果答案是肯定的,我想知道如何以最佳方式将表更改为InnoDB 我试着做改变TABLE

我有一个项目,我已经运行了一段时间,这是一个更大的数据库约6GB。1个数据库表不断损坏,或者现在更频繁地崩溃

表:19779121 MyISAM utf8_unicode_ci 5,4 GB

该表非常大,可以存储用户统计信息,每个用户都可以访问我的网站。所以很多东西都是从那张表上读写的

据我所知,对于大表的建议是将MyISAM更改为InnoDB,以防止这种情况发生,因为InnoDB可以更快更好地处理大量数据

如果答案是肯定的,我想知道如何以最佳方式将表更改为InnoDB

我试着做改变TABLE my_TABLE ENGINE=InnoDB但是当我这样做时phpmyadmin刚刚超时,并且没有对表进行任何更改。我也试着用SSH来实现这一点。我收到错误错误2013(HY000):在查询过程中与MySQL服务器失去连接。服务器上有5GB的ram。每次我这样做的时候,当我看到HTOP时,ram在我得到错误之前会说14.5GB/5.00G。是因为我没有足够的内存吗?如果是,我该怎么办


总的来说。有人对如何处理表损坏/崩溃有什么建议吗?

您可以创建一个具有相同结构的新表,但使用InnoDB作为引擎。然后,您可以将数据从myISAM表逐块移动到此新表。

在命令提示符/shell中执行此操作。没有超时,ans 5 gig将花费大量时间。我尝试了此操作,但出现了错误2013(HY000):在查询过程中与MySQL服务器断开连接。我在服务器上有5GB的ram。每次我这样做的时候,当我看到HTOP时,ram在我得到错误之前会说14.5GB/5.00G。是因为我没有足够的RAM吗?你必须直接在服务器上运行,而不是通过连接。通过ssh连接并运行它,然后让它运行