Модуль Joomla install.sql не выполняется

У меня есть следующий файл 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 ответа

Если вы посмотрите на свой XML, вы увидите следующее:

<install folder="site">

Это означает, что он ищет:

site/sql/install.sql

Так просто, удали folder="site"

Надеюсь это поможет

Я могу думать о нескольких возможных проблемах.

  1. Вы не удаляете модуль правильно между попытками установки, поэтому install SQL не запускается.

  2. Файл SQL не сохраняется как UTF8 NO BOM (хотя раньше это вызывало ошибку #1064)

  3. Путь не рассчитывается правильно (опять же, это обычно выдает ошибку)

  4. У вас может быть ошибка SQL, вы говорите " она специально не выполняет часть создания таблицы ", означает ли это, что в файле, который вы не показываете, есть другой SQL, который может иметь ошибку?

Предложения

Если вы не видите никаких ошибок, я бы посоветовал вам убедиться, что в вашем Global Configuration->Server у тебя есть Error Reporting установлен в Development И в Global Configuration->System у тебя есть Debug System установлен в Yes,

Отчет об ошибках разработки - установит значение в configuration.php подать в

public $error_reporting = 'development';

и в результате вы видите каждую ошибку, которую находит PHP.

NB. иногда, если ваши ошибки достаточно серьезны, вы не сможете получить доступ к своему сайту, в этом случае отредактируйте configuration.php и вернуться к $error_reporting = 'none'

Система отладки - установит значение в configuration.php подать в

public $debug = '1';

и добавит Joomla! Debug Console внизу каждой страницы: Joomla! Консоль отладки

NB. Раздел называется Database Queries покажет любой зарегистрированный SQL, пока сайт находится в debug В режиме, вы можете проверить их, чтобы увидеть, что происходит... т.е. выполняется ваш SQL или нет... Joomla! Консоль отладки - база данных / SQL-запросы

Если ничего из этого не помогло, но вы получили дополнительную информацию, такую ​​как ошибки, добавьте их в свой вопрос, и я постараюсь помочь вам в дальнейшем.

Я потратил много часов на эту проблему. Я нашел решение:

  • положить файлы 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)

Не очень чисто, но я не хочу тратить больше времени на поиск правильного пути

Другие вопросы по тегам