MySql - 将 InnoDB 转换为数据库的 MyISAM 存储引擎

Posted

技术标签:

【中文标题】MySql - 将 InnoDB 转换为数据库的 MyISAM 存储引擎【英文标题】:MySql - Convert InnoDB to MyISAM Storage Engine of Database 【发布时间】:2012-05-04 01:50:53 【问题描述】:

如何将mysql上的数据库存储引擎从InnoDB转换为MyISAM? 我发现很多网站都转换了数据库表的存储引擎,但不是数据库。

提前致谢。

【问题讨论】:

你的意思是你已经尝试过了? http://dev.mysql.com/doc/refman/5.0/en/converting-tables-to-innodb.html 我想转换数据库而不是表。您提供的这个链接是用于转换表而不是数据库 各位,如果这个问题有帮助,你可以投票,不仅可以回答... 管理员:刚刚升级! How to convert all tables from MyISAM into InnoDB?的可能重复 【参考方案1】:

用这个!!

SET storage_engine=MYISAM;
ALTER TABLE table_name ENGINE = MyISAM;

-干杯!!

【讨论】:

我想将 InnoDB 转换为数据库的 MyISAM 存储引擎而不是表。 谢谢。这为我节省了很多时间。当我在运行 MySQL (mariadb) 的 Raspberry PI 上执行此操作时,系统最终在执行大插入或更新时停止锁定。从字面上看快 10 倍【参考方案2】:
ALTER TABLE `table_name` ENGINE=INNODB

【讨论】:

【参考方案3】:

您无法更改数据库的默认存储引擎,但您可以使用 default-storage-engine 配置设置为整个服务器更改它。请注意,这实际上不会更改现有表的存储引擎,只会更改更改后创建的新表。

【讨论】:

感谢您的回答,它对我有帮助,是的,很抱歉回复晚了。 @ArunVM - 如果是这样,请发布关于如何做到这一点的答案。我知道它可以为服务器或单个表完成,但不能用于数据库。【参考方案4】:

数据库只是 MySQL 处理命名空间的方式,因此数据库没有与之关联的引擎,只有表有存储引擎。这就是为什么您可以拥有一个包含多个不同表的数据库,每个表都有不同的引擎。

您必须一一修改每个表才能将它们切换到 InnoDB。

【讨论】:

【参考方案5】:

要使其永久化,请添加到 my.cnf(根据上下文,添加几个位置)

/etc/my.cnf

default-storage-engine= MyISAM

为了安全起见,输出数据库列表 显示数据库;

在我的情况下,使用 php 进行快速操作..

$db = mysql_connect('localhost','someadmin','somepass');
$dbs = array();
$dbs[] = 'test';
$dbs[] = 'myImportantDb';

foreach($dbs as $v)
    mysql_select_db($v);
    $q = mysql_query('show tables');
    $tables = array();
    while($r = mysql_fetch_row($q))
            $tables[] = $r[0];
    
    foreach($tables as $t)
        echo "do $v.$t\n";
        mysql_query('ALTER TABLE `'.$t.'` ENGINE=MyISAM;');
    

mysql_close($db);

【讨论】:

【参考方案6】:

在 PhpMyadmin 4.5 中 选择变量选项卡并查找 存储引擎 并选择编辑并输入 MyISAM。

【讨论】:

【参考方案7】:

您可以通过 PhpMyAdmin 更改存储引擎。在表的详细信息视图中。看截图:

Changing storage engine in PhpMyAdmin

【讨论】:

以上是关于MySql - 将 InnoDB 转换为数据库的 MyISAM 存储引擎的主要内容,如果未能解决你的问题,请参考以下文章

innodb_file_per_table - 转换为InnoDB

MySQL MyISAM 库转换为InnoDB的方法

将mysql引擎转换为innodb

Mysql MyISAM数据库批量转换表引擎为Innodb

MySQL MyISAM引擎转换为InnoDB操作记录

MySQL系统数据库表可以转换成InnoDB吗?