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. +
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;