Модуль 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"
Надеюсь это поможет
Я могу думать о нескольких возможных проблемах.
Вы не удаляете модуль правильно между попытками установки, поэтому
install
SQL не запускается.Файл SQL не сохраняется как UTF8 NO BOM (хотя раньше это вызывало ошибку #1064)
Путь не рассчитывается правильно (опять же, это обычно выдает ошибку)
У вас может быть ошибка 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
внизу каждой страницы:
NB. Раздел называется Database Queries
покажет любой зарегистрированный SQL, пока сайт находится в debug
В режиме, вы можете проверить их, чтобы увидеть, что происходит... т.е. выполняется ваш 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)
Не очень чисто, но я не хочу тратить больше времени на поиск правильного пути