Joomla模块install.sql没有执行

时间:2013-09-30 08:28:21

标签: sql joomla joomla-module

我的网站模块的install.sql文件夹中有以下文件/sql。我正在从模块的.xml文件中引用它,如下所示:

<?xml version="1.0" encoding="utf-8"?>
<extension type="module" version="2.5" client="site" method="install">
    <name>bbb Referral</name>
    <author>AAA Media</author>
    <creationDate>23/02/2012</creationDate>
    <copyright>Copyright (C) 2005 - 2012 Open Source Matters. All rights reserved.</copyright>
    <license>GNU General Public License version 2 or later</license>
    <authorEmail>info@AAA</authorEmail>
    <authorUrl>AAA</authorUrl>
    <version>1.0</version>
    <description>bbb Referral</description>
    <files>
        <filename module="mod_bbb_referral">mod_bbb_referral.php</filename>
        <folder>tmpl</folder>
        <filename>index.html</filename>                       
        <filename>mod_bbb_referral.xml</filename>
    </files>
    <install folder="site">
        <sql>
            <file driver="mysql" charset="utf8">sql/install.sql</file>
        </sql>
    </install>
    <languages folder="language/en-GB">
        <language tag="en-GB">en-GB.ini</language>
    </languages>
    <config>
        <fields name="params">
            <fieldset name="basic">
                <field name="header_text" type="textarea" default="" label="Header text" description="Header text to show before friends list" />
                <field name="footer_text" type="textarea" default="" label="Footer text" description="Footer text to show below friends list" />
                <field name="body_text" type="textarea" default="" label="Body text"
                       description="Body text to include in referral" />
                <field name="thankyou_text" type="textarea" default="" label="Thank you text"
                       description="Thank you text to show when successful" />
                <field name="error_text" type="textarea" default="Error encountered. Please try again later." label="Error text"
                       description="Error text to show if share was not successful in any way." />
                <field name="socialgraph_url" type="text" default="" size="60" label="Social Graph request URL"
                       description="URL to access when getting user's friend list, leave {filter}, {skip} and {count} in URL, they will be replaced upon run-time." />
                <field name="socialgraph_filter" type="text" default="@Friends" label="Social Graph list filter"
                       description="Filter to use when getting list." />
                <field name="socialgraph_page_count" type="text" default="" label="Friends per page" description="Default is 26, leave empty to use default" />
                <field name="socialgraph_oauth_scope" type="text" default="graph/read" label="OAuth scope" description="Separated by a {space}. DO NOT CHANGE if you're unsure." />
            </fieldset>
        </fields>
    </config>
</extension>

但它特别不执行/sql中包含的表的创建部分:

CREATE TABLE IF NOT EXISTS `#__oauth_api_log` (
  `id` int(11) unsigned NOT NULL auto_increment,
  `tracking_session_id` int(11) unsigned NOT NULL,
  `type` char(20) default '',
  `api_request` mediumtext,
  `api_response` mediumtext,
  `api_result` mediumtext,
  `execution_time` float default '-1',
  `date_time` timestamp NULL default CURRENT_TIMESTAMP,
  PRIMARY KEY  (`id`)
);

记录需要此表。

感谢任何帮助/指示。

3 个答案:

答案 0 :(得分:1)

如果您查看XML,您将看到以下内容:

<install folder="site">

这意味着它正在寻找:

site/sql/install.sql

如此简单,请删除folder="site"

希望这有帮助

答案 1 :(得分:0)

我可以想到一些可能的问题。

  1. 在安装尝试之间,您没有正确卸载模块,因此install SQL未运行。

  2. SQL文件未保存为UTF8 NO BOM(虽然这会导致错误#1064被抛出

  3. 路径未正确计算(再次,这通常会引发错误

  4. 你可能有一个SQL bug,你说“它专门没有执行表的创建部分”,这是否意味着文件中还有其他SQL你是没有显示可能有错误?

  5. 建议

    如果您没有看到任何错误,我建议您确保Global Configuration->Server Error Reporting设置为DevelopmentGlobal Configuration->SystemDebug System Yes 1}}设置为configuration.php

    开发错误报告 - 会将public $error_reporting = 'development'; 文件中的值设置为

    configuration.php

    并导致您看到PHP发现的每个错误。

    NB。有时,如果您的错误足够糟糕,您将无法访问您的网站,在这种情况下,请修改$error_reporting = 'none'并恢复为configuration.php

    调试系统 - 会将public $debug = '1'; 文件中的值设置为

    Joomla! Debug Console

    并将Database Queries添加到每个页面的底部: Joomla! Debug Console

    NB。名为debug的部分将显示网站处于{{1}}模式时记录的任何SQL,然后您可以查看它们以查看发生了什么...即你的SQL是否运行... Joomla! Debug Console — Database/SQL Queries

    如果这些都没有帮助,但您获得了任何其他详细信息,例如错误,请将其添加到您的问题中,我会尝试进一步提供帮助。

答案 2 :(得分:0)

我花了很多时间来解决这个问题。我找到了解决方案:

  • 将sql文件放在模块的根目录中
  • 在files标签中声明它们:

    (filename)install.mysql.utf8.sql(/filenam)
    (filename)uninstall.mysql.utf8.sql(/filename)
    

并添加安装/卸载标记:

(install)
    (sql)
        (file charset="utf8" driver="mysql")install.mysql.utf8.sql(/file)
    (/sql)
(/install)

(uninstall)
    (sql)
        (file charset="utf8" driver="mysql")uninstall.mysql.utf8.sql(/file)
    (/sql)
(/uninstall)

不是很干净,但我不想浪费更多时间寻找正确的道路