2

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

我已经遵循了一些关于此的教程并做了以下事情。

我创建了文件夹更新/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);

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

4

1 回答 1

3

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

更长的答案

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

部分问题是

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

虽然我同意你的看法,但那将是干净的方式:Joomla!想让你用 Joomla 做事!方法 ;-)

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

SQL 文件不能包含 C 风格的# comment here注释-- comment here

注释可能支持/* Comment */样式语法,但我尚未对其进行广泛测试。YMMV。

于 2013-12-13T20:29:11.227 回答