Mysql更改默认引擎

时间:2014-11-27 10:04:19

标签: mysql

如何将mysql引擎更改为MYISAM。现在我正在使用INNODB的mysql,但我想将引擎更改为MYISAM。我该怎么做?

CREATE TABLE `classifieds_category` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `site_id` int(11) NOT NULL,
  `template_prefix` varchar(200) NOT NULL,
  `name` varchar(200) NOT NULL,
  `slug` varchar(50) NOT NULL,
  `enable_contact_form_upload` tinyint(1) NOT NULL DEFAULT '0',
  `contact_form_upload_max_size` int(11) NOT NULL DEFAULT '1048576',
  `contact_form_upload_file_extensions` varchar(200) NOT NULL DEFAULT 'txt,doc,odf,pdf',
  `images_max_count` int(11) NOT NULL DEFAULT '0',
  `images_max_width` int(11) NOT NULL DEFAULT '1024',
  `images_max_height` int(11) NOT NULL DEFAULT '1024',
  `images_max_size` int(11) NOT NULL DEFAULT '1048576',
  `description` longtext NOT NULL,
  `sortby_fields` varchar(200) NOT NULL,
  `sort_order` int(10) unsigned NOT NULL DEFAULT '0',
  PRIMARY KEY (`id`),
  KEY `classifieds_category_6223029` (`site_id`),
  KEY `classifieds_category_56ae2a2a` (`slug`),
  CONSTRAINT `site_id_refs_id_2d06e6c6` FOREIGN KEY (`site_id`) REFERENCES `django_site` (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8

我试图在这里更换引擎。但我不想改变每张桌子。是否有任何设置可以改变引擎?

我也运行SET default_storage_engine=MYISAM;之类的查询,但没有反应。

2 个答案:

答案 0 :(得分:3)

  1. default_storage_engine=MYISAM;添加到my.cnf

  2. 重启mysql服务器

答案 1 :(得分:2)

更改变量default_storage_engine的值对现有表没有影响。它只是在你的create table语句中没有指定时,用你在这个变量中指定的引擎创建新表。这只是一个默认值。

另请注意,您必须区分globalsession变量值。要在创建新表时确实将MyISAM作为默认值,而不仅仅是当前会话,请执行以下操作:

SET GLOBAL  default_storage_engine=MYISAM;

如果要在重新启动服务器后将变量保持为此值,则必须将以下行放入my.cnf

部分下的默认文件[mysqld]
default_storage_engine = MYISAM

要将当前表格转换为MyISAM,请为每个表格执行此操作:

ALTER TABLE table_name ENGINE=MyISAM;

但请记住,您的外键约束将不再起作用,因为MyISAM不支持它。它不会抱怨,它会忽略它。所以你最好确定,你知道你在做什么:)