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



我正试图在Joomla中的某些表中添加一些新列,因为我需要将这些修复程序从开发迁移到生产中,我正试图以干净的方式完成这项工作,通过文件系统进行更新。

我已经学习了一些关于这方面的教程,并做了以下操作。

我创建了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);

我直接在数据库中测试了我的查询,它成功了,我缺少什么?

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

更长的回答

请确保通过组件管理器运行升级。简单地重写文件不会触发Joomla的迁移过程。检查#__schemas表中组件的ID,它将具有相应的数据库模式版本#。如果这个版本还没有增加,那么迁移就没有应用。

部分问题是

我正在尝试以干净的方式,通过文件系统进行更新

虽然我同意你的观点,但这将是一种干净的方式:Joomla!想让你做Joomla!方式;-)

关于Joomla的重要提示!SQL文件

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

注释可能支持/* Comment */风格的语法,但我还没有对其进行广泛的测试。YMMV。

最新更新