web-dev-qa-db-fra.com

Le fichier de désinstallation de Joomla Module ne se charge pas pendant l'installation

J'ai un module qui a quelques fonctions DB pendant l'installation pour lesquelles j'ai fait la référence
install.mysql.utf8.sql
uninstall.mysql.utf8.sql

dans mod_score.xml (mod_score est le nom du module)
mode_score.xml Cela montre
"L'installation du module a réussi" mais en vérifiant la base de données, aucune table n'est installée. s'il vous plaît laissez-moi savoir comment résoudre j'ai cherché ici mais n'a pas fonctionné

<files>
    <filename>mod_score.xml</filename>
    <filename module="mod_score">mod_score.php</filename>
    <filename>helper.php</filename>
    <filename>index.html</filename>
        <folder>tmpl</folder>
        <folder>sql</folder>
        <folder>sql/mysql</folder>
        <filename>tmpl/default.php</filename>
        <filename>tmpl/index.html</filename>
        <filename>tmpl/form_success.php</filename> 
        <filename>sql/mysql/install.mysql.utf8.sql</filename>
        <filename>sql/mysql/uninstall.mysql.utf8.sql</filename>
</files>
<install>
        <sql>
         <file driver="mysql" charset="utf8">sql/mysql/install.mysql.utf8.sql</file>
        </sql>
</install>
<uninstall> <!-- Runs on uninstall -->
    <sql>
        <file driver="mysql" charset="utf8">sql/mysql/uninstall.mysql.utf8.sql</file>
    </sql>
</uninstall>

install.mysql.utf8.sql

  DELIMITER $$

-- Match Records 
CREATE TABLE IF NOT EXISTS  `#__match_record` (
 `match_id` int(10) NOT NULL AUTO_INCREMENT,
     ---
     ---
 `match_comments` text NOT NULL,
 PRIMARY KEY (`match_id`)
) ENGINE=InnoDB AUTO_INCREMENT=122 DEFAULT CHARSET=utf8
-- Batting Records

CREATE TABLE IF NOT EXISTS  `#__batting_record` (
 `id` int(15) NOT NULL AUTO_INCREMENT,
 `pname` varchar(40) DEFAULT 'DNP',
 ---
 ---
 `timeinserted` timestamp(6) NOT NULL DEFAULT CURRENT_TIMESTAMP(6) ON UPDATE CURRENT_TIMESTAMP(6),
 PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=244 DEFAULT CHARSET=utf8

-- Bowling Records
CREATE TABLE IF NOT EXISTS  `#__bowling_record` (
 `id` int(10) NOT NULL AUTO_INCREMENT,
 `no` int(10) NOT NULL,
 ---
 ---


 PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=49 DEFAULT CHARSET=utf8


END $$
DELIMITER ;

Version - Joomla 3. +

1
Srinath Naidu

Vous n'êtes pas obligé de spécifier des sous-dossiers et des fichiers dans des dossiers déjà définis. Il suffit d'utiliser <folder>tmpl</folder> et <folder>sql</folder>.

Pas besoin d <folder>sql/mysql</folder> etc. Tout le dossier est déjà en cours d'installation.

Votre <files> tag serait.

<files>
    <filename>mod_score.xml</filename>
    <filename module="mod_score">mod_score.php</filename>
    <filename>helper.php</filename>
    <filename>index.html</filename>
    <folder>tmpl</folder>
    <folder>sql</folder>
</files>

Maintenant, votre problème. Retirer DELIMITER $$ et END $$ DELIMITER ;.

Voir cette réponse pour clarification. Il doit y avoir ; à la fin de chaque requête mysql si vous avez plusieurs requêtes dans un fichier.

Votre sql devrait ressembler à ceci:

-- Match Records 
CREATE TABLE IF NOT EXISTS  `tst_match_record` (
 `match_id` int(10) NOT NULL AUTO_INCREMENT,
 `match_comments` text NOT NULL,
 PRIMARY KEY (`match_id`)
) ENGINE=InnoDB AUTO_INCREMENT=122 DEFAULT CHARSET=utf8;
-- Batting Records

CREATE TABLE IF NOT EXISTS  `tst_batting_record` (
 `id` int(15) NOT NULL AUTO_INCREMENT,
 `pname` varchar(40) DEFAULT 'DNP',
 `timeinserted` timestamp(6) NOT NULL DEFAULT CURRENT_TIMESTAMP(6) ON UPDATE CURRENT_TIMESTAMP(6),
 PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=244 DEFAULT CHARSET=utf8;

-- Bowling Records
CREATE TABLE IF NOT EXISTS  `tst_bowling_record` (
 `id` int(10) NOT NULL AUTO_INCREMENT,
 `no` int(10) NOT NULL,
 PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=49 DEFAULT CHARSET=utf8;
1
Rene Korss