【问题标题】:Making joomla use innoDB and support transaction让 joomla 使用 innoDB 并支持事务
【发布时间】:2009-12-13 06:01:14
【问题描述】:

我是 joomla 的新手,刚刚发现它默认使用 myISAM 数据库引擎。

我已经搜索了 joomla 论坛和扩展目录,甚至在 google 中也没有得到有用的结果。由于 joomla 是一个如此庞大的社区,我不知道为什么似乎没有人对此有答案。

我想知道是否有任何众所周知的分发/扩展可以使 joomla 使用 innodb 以便它可以支持事务。

如果不是,我仍然想知道你认为如果必须这样做会有多困难。

【问题讨论】:

标签: database transactions joomla innodb


【解决方案1】:

在安装 Joomla 之前,您始终可以转到 installation/sql/mysql/joomla.sql 并将 TYPE=MyISAM 的所有实例更改为 TYPE=InnoDB。但是,在利用事务的核心 Joomla 组件中没有任何查询。虽然您可以编写自己的组件来执行此操作,但 Joomla 的核心功能仍然不能。此外,如果您还没有注意到,核心 Joomla 组件将“锁定”某些表的行。它通过设置一个标志来指定当前编辑项目的用户的 ID 来实现这一点。不理想,但它有助于避免人们在使用非事务性数据库引擎时发生冲突。

【讨论】:

  • @jilleblanc:joomla 网站上几乎所有可用的扩展都假定使用 MyISAM 引擎,这是正确的吗?如果 joomla 核心数据库表使用 innoDB,安装这些扩展时会不会有很多兼容性问题?这对于 joomla 开发人员来说是常见的,还是他们只是喜欢使用 MyISAM 引擎?
  • 大多数扩展要么采用 MyISAM,要么不在其 SQL 安装文件中指定引擎。核心始终假定为 MyISAM。我已经同时安装了 MyISAM 和 InnoDB 表,没有兼容性问题(尽管也不一定是理想的情况)。大多数 Joomla 3PD 扩展开发人员都忽略了数据库引擎。
【解决方案2】:

我不太确定强制使用 db 引擎类型是否有意义。允许安装 Joomla 的管理员选择引擎类型更有意义。如果没有特别设置,Joomla 只会采用默认值。您可以通过更改 mySQL 配置或使用启动参数更改默认值来更改默认存储引擎。

见:http://dev.mysql.com/doc/refman/5.0/en/storage-engines.html

【讨论】:

  • 不,Joomla 不会采用默认值:它在安装 SQL 中指定 MyISAM。当然,如果 MySQL 被配置为独占使用 InnoDB,它会忽略这一点。
【解决方案3】:

在编写 Joomla 时,InnoDB 不稳定,完全重写它可能会给一些最终用户带来问题。

【讨论】:

    【解决方案4】:

    joomla 使用 InnoDB 不支持的 FULLTEXT SEARCH 索引,一旦您使用 innoDB 在 MYSQL 上部署 joomla,它就会抱怨 InnoDB 不支持 FULLTEXT 搜索

    【讨论】:

      猜你喜欢
      • 2014-04-29
      • 2011-10-18
      • 1970-01-01
      • 2018-01-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多