php - 模块 install.mysql.utf8.sql 中的 joomla 2.5 不起作用

标签 php sql joomla module

我想安装带有模块的外部 sql 文件,我遵循此链接教程 http://docs.joomla.org/J2.5:Creating_a_simple_module/Using_the_Database但它不起作用。这是我的 xml 和 sql 文件编码。我的错误在哪里?

<?xml version="1.0" encoding="utf-8"?>
<extension type="module" version="2.5.0" client="site" method="upgrade">
<name>practic_module</name>
<author>John Doe</author>
<version>1.0.0</version>
<description>this is a practice module struckture</description>
<files>
<filename>mod_helloworld.xml</filename>
<filename module="mod_helloworld">mod_helloworld.php</filename>
<filename>index.html</filename>
<filename>helper.php</filename>
<filename>tmpl/default.php</filename>
<filename>tmpl/index.html</filename>
</files>
    <config>
<install>
    <sql>
     <file driver="mysql" charset="utf8">sql/mysql/install.mysql.utf8.sql</file>
     <file driver="sqlazure"   charset="utf8">sql/sqlazure/install.sqlazure.utf8.sql</file>
</sql>
</install>

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

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

<fields name="params">
<fieldset name="basic">
    <field name="lang" type="sql" default="1" label="Select a language" query="SELECT id AS value, lang FROM #__helloworld" />
</fieldset>
</fields>


</config>

</extension>

sql目录为C:\xampp\htdocs\joom\modules\mod_helloworld\sql\mysql,install.mysql.utf8.sql文件为

CREATE TABLE IF NOT EXISTS `#__helloworld` (
    `id` int(10) NOT NULL AUTO_INCREMENT,
    `hello` text NOT NULL,
    `lang` varchar(25) NOT NULL,

PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1;

INSERT INTO `#__helloworld` (`hello`, `lang`) VALUES ('Hello World', 'en-GB');
INSERT INTO `#__helloworld` (`hello`, `lang`) VALUES ('Hola Mundo', 'es-ES');
INSERT INTO `#__helloworld` (`hello`, `lang`) VALUES ('Bonjour tout le monde', 'fr-  FR');  

但它不起作用。数据库未安装。我的错误在哪里?请帮忙

最佳答案

您已经添加了 <install> , <uninstall><update> <config> 内的标签不应该做的标签。他们需要到外面去。您还需要定义 sql 文件夹。这是您的完整 xml 代码:

<?xml version="1.0" encoding="utf-8"?>
<extension type="module" version="2.5.0" client="site" method="upgrade">
<name>practic_module</name>
<author>John Doe</author>
<version>1.0.0</version>
<description>this is a practice module struckture</description>

<files>
   <filename>mod_helloworld.xml</filename>
   <filename module="mod_helloworld">mod_helloworld.php</filename>
   <filename>index.html</filename>
   <filename>helper.php</filename>
   <filename>tmpl/default.php</filename>
   <filename>tmpl/index.html</filename>
   <folder>sql</folder>
</files>

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

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

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

<config>
   <fields name="params">
      <fieldset name="basic">
         <field name="lang" type="sql" default="1" label="Select a language" query="SELECT id AS value, lang FROM #__helloworld" />
      </fieldset>
   </fields>
</config>

</extension>

还要确保你的文件夹结构是正确的

希望对你有帮助

关于php - 模块 install.mysql.utf8.sql 中的 joomla 2.5 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20176511/

相关文章:

PHP mail() 函数返回 false,但没有错误

php - 在 PHP 中使用 OWL 作为 mysql

MySQL 在 SQL 上崩溃

mysql - SQL Join 用于检索单个用户的记录

mysql - 查询为空 SQL=

css - joomla:CSS 是如何生成的?

php - 在 phpexcel 中将图像添加到 Excel

php - 如何正确捕获 Ajax 调用上的 PHP 错误

php - 无法为排行榜数据库设计提供合适的解决方案

php - Joomla 自定义组件中的基本图像上传