如何将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;
之类的查询,但没有反应。
答案 0 :(得分:3)
将default_storage_engine=MYISAM;
添加到my.cnf
重启mysql服务器
答案 1 :(得分:2)
更改变量default_storage_engine
的值对现有表没有影响。它只是在你的create table
语句中没有指定时,用你在这个变量中指定的引擎创建新表。这只是一个默认值。
另请注意,您必须区分global
和session
变量值。要在创建新表时确实将MyISAM作为默认值,而不仅仅是当前会话,请执行以下操作:
SET GLOBAL default_storage_engine=MYISAM;
如果要在重新启动服务器后将变量保持为此值,则必须将以下行放入my.cnf
[mysqld]
中
default_storage_engine = MYISAM
要将当前表格转换为MyISAM,请为每个表格执行此操作:
ALTER TABLE table_name ENGINE=MyISAM;
但请记住,您的外键约束将不再起作用,因为MyISAM不支持它。它不会抱怨,它会忽略它。所以你最好确定,你知道你在做什么:)