安装或更新新组件时,我的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代码。我在这里可能缺少什么?
答案 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 ,因此完成了这项工作。