更新我的组件Joomla 2.5没有执行的sql

时间:2013-08-24 21:02:04

标签: joomla2.5 joomla-extensions

我正在尝试为Joomla中的某些表添加一些新列,因为我需要将这些修补程序从dev迁移到生产我试图以干净的方式执行此操作,通过文件系统进行更新。

我已经遵循了一些有关此问题的教程,并做了以下工作。

我创建了文件夹updates / sql,并在我的新版本(1.5)中添加了一个新的sql文件。 我更改了xml文件中的版本号。 我在后端刷新了缓存。

以下是我使用的代码:

我的版本:

<version>1.5</version>

更新节点:

<update>
        <schemas>
            <schemapath type="mysql">sql/updates/mysql</schemapath>
            <schemapath type="sqlsrv">sql/updates/sqlsrv</schemapath>
            <schemapath type="sqlazure">sql/updates/sqlazure</schemapath>
        </schemas>
</update>

sql文件:

ALTER TABLE `#__mycomponent` ADD `field` VARCHAR(255);

我直接针对数据库测试了我的查询并且它有效,我缺少什么?

1 个答案:

答案 0 :(得分:2)

简短回答 - Joomla!的数据库迁移工具只有在通过组件管理器上传新组件后才会执行这些操作。它不会检查每个$ _REQUEST上的迁移,这是您的问题所暗示的。

更长的答案

确保通过组件管理器运行升级。简单地覆盖文件不会触发Joomla的迁移过程。检查#__schemas表中的组件ID,它将具有相应的数据库模式版本#。如果该版本尚未增加,则不应用迁移。

部分问题是

  

我试图以干净的方式做到这一点,通过文件系统进行更新

虽然我同意你的观点,但那将是干净的方式:Joomla!希望你做Joomla的事情!方式; - )

关于Joomla的重要说明! SQL文件

SQL文件不能包含C样式注释(# comment here),并且必须包含这样的注释-- comment here花几个小时调试我自己的代码,并且不得不重新运行升级约25次到找出数据库模式迁移失败的位置。

注释可能支持/* Comment */样式语法,但我还没有广泛地测试它。 YMMV。