0

当我安装或更新新组件时,我的 SQL 文件没有被执行。最初我觉得很奇怪我的同事需要将他的 SQL 文件直接执行到 PHPMyAdmin 中,但不是 Joomla!应该自动运行文件?

以下是我设置 XML 的方式:

ReforcoDigital.xml

<?xml version="1.0" encoding="utf-8"?>
<extension type="component" version="2.5.0" client="site" method="upgrade">
<name>Reforco Digital</name>
<author>Rodrigo Pereira</author>
<creationDate>14/05/2013</creationDate>
<copyright>Copyright</copyright>
<license>Licença</license>
<authorEmail>rodrigo-c-pereira@hotmail.com</authorEmail>
<authorUrl>http://www.site.com</authorUrl>
<version>0.1</version>
<description>Sistema de Reforço Digital</description>

<install>
    <sql>
        <file driver="mysql" charset="utf8">sql/install.mysql.utf8.sql</file>
    </sql>
</install>

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

<files folder="site">
    <folder>language</folder>
    <folder>models</folder>
    <folder>views</folder>
    <filename>reforcodigital.php</filename>
    <filename>controller.php</filename>
    <filename>index.html</filename>
</files>

<administration>
    <menu>Reforco Digital</menu>
    <files folder="admin">
        <folder>sql</folder>
        <folder>views</folder>
        <filename>controller.php</filename>
        <filename>reforcodigital.php</filename>
        <filename>index.html</filename>
    </files>
</administration>
</extension>

文件夹admin/sqlinstall.mysql.utf8.sql文件,admin/sql/updates/mysql有文件0.1.sql;两者都有相同的 SQL 代码。我可能在这里错过了什么?

4

2 回答 2

0

我一遍又一遍地用0.1.sql更新我的组件的事实是问题所在。将文件名更改为0.2.sql并完成了这项工作。

我的理解是Joomla!将按字母顺序查找更新文件,并判断该版本是否已被使用;如果那是错误的,请纠正我。由于有比0.1更高的版本,它完成了这项工作。

于 2013-05-15T18:37:53.597 回答
0

我之前评论说我和你有同样的问题,但我没有。我的问题完全不同,我将在解释您的文件发生的情况后进行描述。

因此,您的 sql 文件夹位于您的管理组件文件夹中(这是正常的),但您的安装/卸载 sql XML 条目没有描述这一点。因此,我相信如果您进行此更改,您会发现它按预期工作:

<install>
    <sql folder="admin">
        <file driver="mysql" charset="utf8">sql/install.mysql.utf8.sql</file>
    </sql>
</install>

我的问题是更新部分只会在 #__schema 表中存在模式时执行模式更新 - 并且 install.sql 不会在更新时执行。因此,如果您正在升级您的扩展并向其中添加一个表,那么您不能真正依赖 XML 安装程序来创建您的新表,除非您的扩展在更新之前已经有表。

如果需要,我将使用 install.php 文件来搜索和创建表。

于 2013-05-15T18:18:44.873 回答