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

Ton*_*ark 26 php mysql phpmyadmin

如何将数据库存储引擎转换InnoDBMyISAM开启MySQL?我找到了很多站点来转换数据库表的存储引擎,但不是数据库. 我附加了屏幕截图以便更好地理解

提前致谢.

Dev*_*per 48

用这个!!

SET storage_engine=MYISAM;
ALTER TABLE table_name ENGINE = MyISAM;
Run Code Online (Sandbox Code Playgroud)

-干杯!!

  • 谢谢.这为我节省了很多时间.当我在运行MySQL(mariadb)的Raspberry PI上执行此操作时,系统最终在执行大插入或更新时停止锁定.字面上快了10倍 (2认同)

小智 16

ALTER TABLE `table_name` ENGINE=INNODB
Run Code Online (Sandbox Code Playgroud)


Eri*_*lje 12

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


Ian*_*Ian 8

数据库只是MySQL执行命名空间的方式,因此数据库没有与之关联的引擎,只有表具有存储引擎.这就是为什么你可以拥有一个包含几个不同表的数据库,每个表都有不同的引擎.

您将不得不逐个修改每个表以将它们切换到InnoDB.


小智 5

要使其永久化,请添加到 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);
Run Code Online (Sandbox Code Playgroud)