更新:[背景情報:私は、MySql dbaseと対話するためにPHPコードを使用するSilverlightアプリケーションで作業しています。 www.mobilesportscoach.com(www.mobilesportscoach.com/testのデモサイト)に標準インストールパッケージがあります。これは、phpMyAdminでSQLファイルを実行するとうまくいきます。しかし、私はいくつかの場所でいくつかのスクリプトを実行することなく、Joomlaでインストール可能なパッケージ全体をしたいです。]JoomlaカスタムインストーラコードAPIを使用したストアドプロシージャの作成
私はjoomlaのコンポーネントのXMLインストールファイルを作成してインストールセクションで私はテーブル/ 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を試してみたが、私はそれを動作させることはできません。 私はXMLでinstallfileタグを持っている: 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はまったく起動されていないようですね。
私は可能であれば、私は1つのパッケージにそれをすべてしたい、ユーザーが別のSQLスクリプトを実行したくない...
あなたが使用しているユーザ名がストアドプロシージャの作成を実行できるかどうかを確認できましたか? –
Joomlaはすべての権限を持つroot(localhost test dbase)として接続します –
最初にストアドプロシージャを使用している理由は何ですか? http://stackoverflow.com/questions/59880/are-stored-procedures-more-efficient-in-general-than-inline-statements-on-mode –