首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何强制drupal使用ENGINE=MyISAM创建表

问如何强制drupal使用ENGINE=MyISAM创建表
EN

Drupal用户
提问于 2014-01-01 10:09:39
回答 2查看 729关注 0票数 0

这是drupal中常见的错误,你们可能已经看到过这样的错误:

代码语言:javascript
复制
PDOException: SQLSTATE[42S02]: Base table or view not found, table .... does not exist.

当我试图安装drupal7时,它会报告一个信号量表不存在的错误。我试图通过这个查询手动创建它。

代码语言:javascript
复制
CREATE TABLE IF NOT EXISTS `semaphore` (
  `name` varchar(255) NOT NULL DEFAULT '' COMMENT 'Primary Key: Unique name.',
  `value` varchar(255) NOT NULL DEFAULT '' COMMENT 'A value for the semaphore.',
  `expire` double NOT NULL COMMENT 'A Unix timestamp with microseconds indicating when the semaphore should expire.',
  PRIMARY KEY (`name`),
  KEY `value` (`value`),
  KEY `expire` (`expire`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='Table for holding semaphores, locks, flags, etc. that...';

它报告了同样的错误。我把InnoDB换成了myISAM,它成功了!我发现服务器上的mysql不支持带有InnoDB引擎的表,不幸的是,默认情况下,drupal7会用这个引擎创建所有表。是否有任何方法将此默认值更改为MyISAM?

EN

回答 2

Drupal用户

回答已采纳

发布于 2014-01-01 12:16:31

模式定义可以采用'mysql_engine'的参数(默认为'InnoDB‘),在createTableSql()中。

理论上,您可以使用自定义模块对所有定义的模式进行更改,并更改引擎。

然而,这样做是非常值得怀疑的。如果您重视您的网站和数据,您不应该使用MyISAM,除非您了解这两个引擎的区别。

切换到支持InnoDB的提供程序。在5.5岁时,MySQL本身就是默认为InnoDB。我对任何不支持InnoDB的供应商都会非常怀疑。

票数 3
EN

Drupal用户

发布于 2014-08-22 06:22:54

试试这条路:(从这里:https://www.drupal.org/node/1089724 )

在includes>database>mysql>shema.inc中,在第84行,我将'mysql_engine‘=> 'InnoDB’改为'mysql_engine‘=> 'MyISAM’。

对我来说很管用。

票数 0
EN
页面原文内容由Drupal提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://drupal.stackexchange.com/questions/98640

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档