MySQL默认数据库以及如何使现有的非InnoDB成为InnoDB

时间:2011-05-23 16:41:53

标签: mysql database database-design innodb

我正处于项目的开始阶段,到目前为止我一直在使用默认的MySQL数据库。

顺便说一句,默认数据库是否有名称?

我的问题是如何在不删除当前表和创建新表的情况下将现有表更改为utf-8和InnoDB。是否有一个alter table来创建表utf-8和InnoDB?

谢谢, 亚历

2 个答案:

答案 0 :(得分:5)

MyISAM是MySQL的默认存储引擎(直到5.5.5,此时InnoDB成为默认值)。没有默认数据库的概念。

要使现有表格使用InnoDB,请使用以下命令:

ALTER TABLE tbl_name ENGINE = InnoDB;

要将现有表格的字符集更改为utf8,请使用以下命令:

ALTER TABLE tbl_name CONVERT TO CHARACTER SET utf8;

答案 1 :(得分:2)

如果你想通过将表更改为InnoDB来安全地玩,我有一个很好的建议:

创建一个新表作为InnoDB并加载它

对于此示例,您在mydb数据库中有一个名为mytable的MyISAM表。您可以执行以下操作:

use mydb
CREATE TABLE mytable_innodb LIKE mytable;
ALTER TABLE mytable_innodb ENGINE=InnoDB;
INSERT INTO mytable_innodb SELECT * FROM mytable;
ALTER TABLE mytable RENAME mytable_myisam;
ALTER TABLE mytable_innodb RENAME mytable;

就是这样。新表是InnoDB,你可以在MyISAM中备份原始表格及其原始内容和布局。您可以在新的InnoDB表上自由执行所需的任何其他转换。

CAVEAT

确保优化InnoDB

InnoDB performance tweaks

Howto: Clean a mysql InnoDB storage engine?

How to Safely Change InnoDB Log File Size

Major Differences Between InnoDB and MyISAM