Joomla!2.5在安装/更新时不执行SQL文件

时间:2013-05-15 16:29:04

标签: joomla2.5

安装或更新新组件时,我的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 / sql 具有 install.mysql.utf8.sql 文件, admin / sql / updates / mysql 具有该文件 0.1.sql ;两者都有相同的SQL代码。我在这里可能缺少什么?

2 个答案:

答案 0 :(得分: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文件来搜索并在必要时创建表。

答案 1 :(得分:0)

我一直在使用 0.1.sql 更新我的组件这一事实是个问题。将文件名更改为 0.2.sql ,它完成了工作。

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