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 存储引擎的主要内容,如果未能解决你的问题,请参考以下文章