Обновление: [Справочная информация: я работаю над приложением Silverlight, которое использует PHP-код для взаимодействия с базой данных MySql.У меня есть обычный установочный пакет на www.mobilesportscoach.com (демонстрационный сайт на www.mobilesportscoach.com/test), который хорошо работает, когда вы запускаете файл SQL в phpMyAdmin.Но я хочу, чтобы весь пакет можно было установить в Joomla без необходимости, чтобы люди запускали несколько сценариев в нескольких местах.]
Я создаю установочный файл xml компонентов joomla и в разделе установки хочу, чтобы он создал мойТаблицы / хранимые процедуры с помощью сценария SQL, поэтому я попробовал:
<install>
<sql>
<file charset="utf8" driver="mysql">install.sql</file>
</sql>
<install>
Таблицы не проблема, однострочный код SQL работает нормально, но в моих инструкциях процедуры создания SQL я должен изменить разделитель (вот как это работает в MySQL), например:
DELIMITER $$
CREATE PROCEDURE `tp_delete_match_and_scores_onmatchid`(IN matchid VARCHAR(10))
BEGIN
DELETE FROM tp_scores WHERE (tp_scores.matchid=matchid);
DELETE FROM tp_matches WHERE (tp_matches.recid=matchid);
END$$
DELIMITER ;
Установщик расширений дает мне:
JInstaller: :Install: Error SQL DB function failed with error number 1064
You have an error in your SQL syntax; check the manual that corresponds to your MySQL
server version for the right syntax to use near 'DELIMITER $$
Я также попробовал пользовательский API установщика, но не могу его получитьдля работы: у меня есть тег installfile в моем xml: install.component.php
Мой php:
<?php
function com_install(){
global $database;
echo "TEST COM_INSTALL";
//get database
if(defined('_JEXEC')){
//joomla 1.5
$database = JFactory::getDBO();
}
//table for item index
$query = "CREATE PROCEDURE `tp_delete_match_and_scores_onmatchid`(IN matchid VARCHAR(10)";
$query .= "\nBEGIN";
$query .= "\nDELETE FROM tp_scores WHERE (tp_scores.matchid=matchid);";
$query .= "\nDELETE FROM tp_matches WHERE (tp_matches.recid=matchid);";
$query .= "\nEND";
$database->setQuery($query);
$database->query();
?>
Компонент устанавливается нормально, но я не могу найти свою процедуру с phpMyAdmin /не создан.Похоже, install.component.php вообще не запускается?
Я не хочу, чтобы пользователи запускали отдельный скрипт sql, я хочу, чтобы все это было в одном пакете, если это возможно ...