【问题标题】:Mysql changing default engineMysql更改默认引擎
【发布时间】:2014-11-27 10:04:18
【问题描述】:

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

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;一样运行查询,但没有反应。

【问题讨论】:

  • 我使用的是 mysql 工作台...不是 php myadmin..
  • 仅供参考,工作台和 phpmyadmin 只是前端。
  • 正如fancyPants 写的,这只是前端,命令是一样的,你改变了你的默认值,现在所有新创建的表都将是MYISAM,但是所有现有的表都必须单独迁移(在第一条评论你会发现命令和示例脚本用 php 执行此操作)
  • 为什么要这样做?可能会有适度的性能优势,但引用完整性、约束维护等问题肯定会超过这一点。

标签: mysql


【解决方案1】:

更改变量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 不支持它。它不会抱怨,只会忽略它。所以你最好确定,你知道你在做什么:)

【讨论】:

  • 很高兴我能帮上忙。请将我的答案标记为已接受,然后单击检查。如果您有兴趣,这里有一个快速指南,该网站的工作原理:stackoverflow.com/tour
【解决方案2】:
  1. default_storage_engine=MYISAM;添加到my.cnf

  2. 重启mysql服务器

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-06-27
  • 2018-03-05
  • 2012-11-11
  • 2011-11-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多