部署我的Joomla组件时,我放入了数据库的更新文件。即使数据库没有变化。这是必要的吗?
AND:内容是什么?我是否只需要将这些SQL语句用于从版本3到版本4的更改,还是必须还有版本1和版本2的更改?
最诚挚的问候 DreiBaer
答案 0 :(得分:2)
我已经完成了一些测试,看起来你需要一个SQL更新文件,用于你的组件版本,它不需要进行任何数据库更改。但是,在较旧的Joomla版本中可能并非总是如此,请参阅下文。
当您在没有组件版本的Joomla网站安装组件时,唯一运行的sql文件是{{1您的清单文件的节点。该文件可能类似于install
。
只要网站没有任何版本的组件,即使您安装更高版本,例如2.3.1,这个更高版本确实有一些SQL更新文件,不会执行这些文件,只执行此版本的安装文件(2.3.1)。但是在这种情况下,不执行SQL更新文件,解析它们的版本号,并在Joomla的模式表中针对组件存储最大版本号。例如,如果组件的2.3.1版包含SQL更新文件0.0.1.sql,1.0.1.sql,1.2.1.sql和2.0.4.sql,那么在首次安装此组件时,模式表将具有2.0.4的version_id。
当更新组件时,不会执行安装SQL文件。 Joomla检查已安装组件的架构版本,然后按顺序执行每个SQL更新文件,其架构版本号大于安装的架构版本号。例如,如果您安装了组件并且其模式版本为1.5.2,并且您的更新包含SQL更新文件1.4.1,1.5.0,1.5.2,1.5.19和1.6.0,然后只按顺序执行SQL脚本1.5.19和1.6.0。
如果您是第一次安装组件且它没有更新文件,则架构表包含一个带有空白version_id字段的记录。如果随后使用包含SQL更新文件的版本更新该组件,则原始模式版本将计算为零,并且所有更新文件将被执行。
这意味着,对于组件的每个版本,SQL安装文件必须具有所有必需的SQL语句才能使数据库进入组件版本的正确状态。在安装,甚至安装更高版本的组件时,不会运行任何更新,因此可用于操作数据库的唯一SQL是安装文件中的SQL。
为了使您的组件可以正确升级,您必须拥有SQL更新文件,这些文件可以 安装的版本取决于您尝试更新的版本。例如,如果管理员在更新组件方面落后,并且他们安装了1.0.0版并希望直接更新到最新版本(例如4.0.0),则版本4.0.0需要包含1到2的更新,2到3,3到4以及之间的任何颠覆。
Joomla的文档中有this old article,它准确地讨论了您提出的问题,但是它过时了(版本2.5),我认为这些信息不再准确
本文说,对于没有任何SQL更新的版本,有必要使用空白SQL更新文件,否则将不会执行使用SQL更新文件的后续更新,但是我已经对此进行了测试,它似乎不是一个问题。在旧版本的Joomla中可能已经出现这种情况,但在我测试的版本(3.5.7)上却不是这样。
最好的做法是坚持文档中描述的约定 - 包括空的SQL更新文件,因为它可能会受到伤害,而且我在测试中发现的行为没有记录,它可能会在未来发生变化时发生变化
文档还说组件版本需要与更新SQL文件版本匹配,但我再次发现这不再正确。您可以使用完全独立于组件版本控制的SQL模式版本控制而不会出现任何问题。然而,将架构和组件版本保持一致可能也是一个好主意 - 我无法想出为什么你不会这样做。