如何将MySQL数据库存储引擎从InnoDB转换为MyISAM?
我找到了很多转换数据库表存储引擎的网站,但是没有转换整个数据库的。
提前感谢。
使用这个!!
SET storage_engine=MYISAM;
ALTER TABLE table_name ENGINE = MyISAM;
-干杯!!
ALTER TABLE `table_name` ENGINE=INNODB
你无法更改数据库的默认存储引擎,但是可以使用 default-storage-engine
配置设置来更改整个服务器的存储引擎。请注意,这实际上不会更改现有表的存储引擎,而只会更改在更改后创建的新表的存储引擎。
数据库只是MySQL实现命名空间的一种方式,因此数据库本身没有存储引擎,只有表格才有存储引擎。这就是为什么你可以在一个数据库中拥有多个不同存储引擎的表格。
你需要逐个修改每个表格以将它们切换到InnoDB。
要使其永久生效,请添加到my.cnf文件中(根据上下文情况,可能有多个位置)
/etc/my.cnf
default-storage-engine= MyISAM
为了安全起见,可以使用show databases;输出数据库列表
在我的情况下,我使用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);