Titre du sujet : Erreur mysql.sql avec contrainte entre les tables par DragonTribal sur 17/11/2010 12:26:21
bonjour, voila nous avons créer un module en php, que nous voulons intégrer comme modules xoops.
nous rencontrons déja un premier problème dans le fichier sql/mysql.php
il semble que xoops n'arrivent pas a lire les contraintes dans le fichier mysql.sql. dans mon fichier xoops_version.php j'ai placer ceci :
$modversion['sqlfile']['mysql'] = "sql/mysql.sql";
$modversion['tables'] = array(
"FC_game_events_connexions",
"FC_game_events_events",
"FC_game_events_jeux",
"FC_game_events_jeux_users",
"FC_game_events_team_membres",
"FC_game_events_team",
"FC_game_events_users",
"FC_game_events_team_users_data",
);
Et dans le fichier mysql.sql
--
-- Structure de la table `FC_game_events_connexions`
--
CREATE TABLE `FC_game_events_connexions` (
`login` varchar(100) collate latin1_general_ci NOT NULL,
`token` varchar(47) collate latin1_general_ci NOT NULL,
`ip` varchar(60) collate latin1_general_ci default NULL,
`date_debut_session` int(11) default NULL,
`date_dernier_acces_session` int(11) default NULL,
PRIMARY KEY (`login`,`token`),
UNIQUE KEY `token_UNIQUE` (`token`),
UNIQUE KEY `login_UNIQUE` (`login`),
KEY `fk_connexsions_login` (`login`),
KEY `ip_unique` (`login`,`ip`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci;
--
-- Contenu de la table `FC_game_events_connexions`
--
-- --------------------------------------------------------
--
-- Structure de la table `FC_game_events_events`
--
CREATE TABLE `FC_game_events_events` (
`id` int(11) NOT NULL auto_increment,
`nom` varchar(45) collate latin1_general_ci default NULL,
`date_debut` timestamp NULL default NULL,
`date_fin` timestamp NULL default NULL,
`createur` int(11) NOT NULL,
`nom_jeu` varchar(100) collate latin1_general_ci NOT NULL,
`team_id` int(11) default NULL,
`commentaire` text collate latin1_general_ci NOT NULL,
`restreint_equipe` tinyint(1) default '0' COMMENT 'apply to other teams',
`display` tinyint(1) default '1' COMMENT 'apply to everybody',
`demande_de_match` tinyint(1) default '0',
PRIMARY KEY (`id`),
KEY `fk_FC_game_events_events_FC_game_events_jeux1` (`nom_jeu`),
KEY `fk_FC_game_events_events_FC_game_events_teams1` (`team_id`),
KEY `fk_FC_game_events_events_FC_game_events_users1` (`createur`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci AUTO_INCREMENT=1 ;
--
-- Contenu de la table `FC_game_events_events`
--
-- --------------------------------------------------------
--
-- Structure de la table `FC_game_events_jeux`
--
CREATE TABLE `FC_game_events_jeux` (
`nom_jeu` varchar(100) collate latin1_general_ci NOT NULL,
`description` text collate latin1_general_ci,
PRIMARY KEY (`nom_jeu`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci;
--
-- Contenu de la table `FC_game_events_jeux`
--
INSERT INTO `FC_game_events_jeux` VALUES ('Aion', 'un jeu');
INSERT INTO `FC_game_events_jeux` VALUES ('Battlefield Bad Company 2', 'un jeu');
INSERT INTO `FC_game_events_jeux` VALUES ('CS', 'un jeu');
INSERT INTO `FC_game_events_jeux` VALUES ('Waaah', 'un jeu');
INSERT INTO `FC_game_events_jeux` VALUES ('Woups', 'un jeu');
INSERT INTO `FC_game_events_jeux` VALUES ('Wow', 'un jeu');
-- --------------------------------------------------------
--
-- Structure de la table `FC_game_events_jeux_users`
--
CREATE TABLE `FC_game_events_jeux_users` (
`nom_jeu` varchar(100) collate latin1_general_ci NOT NULL,
`user_id` int(11) NOT NULL,
PRIMARY KEY (`nom_jeu`,`user_id`),
KEY `fk_FC_game_events_jeux_has_FC_game_events_users_FC_game_event2` (`user_id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci;
--
-- Contenu de la table `FC_game_events_jeux_users`
--
-- --------------------------------------------------------
--
-- Structure de la table `FC_game_events_team_members`
--
CREATE TABLE `FC_game_events_team_members` (
`team_id` int(11) NOT NULL,
`user_id` int(11) NOT NULL,
`valide` tinyint(1) NOT NULL default '0',
PRIMARY KEY (`team_id`,`user_id`),
KEY `fk_FC_game_events_teams_has_FC_game_events_users_FC_game_even2` (`user_id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci;
--
-- Contenu de la table `FC_game_events_team_members`
--
INSERT INTO `FC_game_events_team_members` VALUES (1, 1, 1);
INSERT INTO `FC_game_events_team_members` VALUES (1, 2, 1);
INSERT INTO `FC_game_events_team_members` VALUES (1, 3, 1);
INSERT INTO `FC_game_events_team_members` VALUES (2, 2, 1);
INSERT INTO `FC_game_events_team_members` VALUES (2, 3, 1);
INSERT INTO `FC_game_events_team_members` VALUES (3, 2, 1);
INSERT INTO `FC_game_events_team_members` VALUES (3, 3, 1);
INSERT INTO `FC_game_events_team_members` VALUES (4, 2, 1);
-- --------------------------------------------------------
--
-- Structure de la table `FC_game_events_teams`
--
CREATE TABLE `FC_game_events_teams` (
`team_id` int(11) NOT NULL auto_increment,
`nom` varchar(100) collate latin1_general_ci NOT NULL,
`description` text collate latin1_general_ci,
`createur` int(11) NOT NULL,
`chef` int(11) NOT NULL,
`date_creation` timestamp NULL default NULL,
`lien_vocal` varchar(255) collate latin1_general_ci default NULL,
PRIMARY KEY (`team_id`),
UNIQUE KEY `nom_UNIQUE` (`nom`),
KEY `fk_FC_game_events_teams_FC_game_events_users1` (`createur`),
KEY `nom_INDEX` (`nom`),
KEY `fk_FC_game_events_teams_FC_game_events_users2` (`chef`)
) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci AUTO_INCREMENT=5 ;
--
-- Contenu de la table `FC_game_events_teams`
--
INSERT INTO `FC_game_events_teams` VALUES (1, 'The best', 'On est les meilleurs', 2, 2, '0000-00-00 00:00:00', NULL);
INSERT INTO `FC_game_events_teams` VALUES (2, 'Cat''s eye', 'En avant l''aventure !', 2, 2, '0000-00-00 00:00:00', NULL);
INSERT INTO `FC_game_events_teams` VALUES (3, 'Ma team !', 'azertyuiop azertyuiop azertyuiop azertyuiop azertyuiop azertyuiop azertyuiop azertyuiop azertyuiop azertyuiop azertyuiop azertyuiop azertyuiop azertyuiop azertyuiop azertyuiop azertyuiop azertyuiop azertyuiop azertyuiop azertyuiop azertyuiop azertyuiop azertyuiop azertyuiop azertyuiop', 2, 2, '0000-00-00 00:00:00', NULL);
INSERT INTO `FC_game_events_teams` VALUES (4, 'Ma team !(3)', 'azertyuiop azertyuiop azertyuiop azertyuiop azertyuiop azertyuiop azertyuiop azertyuiop azertyuiop azertyuiop azertyuiop azertyuiop azertyuiop azertyuiop azertyuiop azertyuiop azertyuiop azertyuiop azertyuiop azertyuiop azertyuiop', 2, 2, '0000-00-00 00:00:00', NULL);
-- --------------------------------------------------------
--
-- Structure de la table `FC_game_events_users`
--
CREATE TABLE `FC_game_events_users` (
`user_id` int(11) NOT NULL auto_increment,
`login` varchar(100) collate latin1_general_ci default NULL,
`mdp` varchar(512) collate latin1_general_ci default NULL,
`mail` varchar(255) collate latin1_general_ci default NULL,
PRIMARY KEY (`user_id`),
UNIQUE KEY `login_UNIQUE` (`login`)
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci AUTO_INCREMENT=4 ;
--
-- Contenu de la table `FC_game_events_users`
--
INSERT INTO `FC_game_events_users` VALUES (1, 'toto', 'a7102b267e67049289d53b0036c345cd', 'compte@de.test');
INSERT INTO `FC_game_events_users` VALUES (2, 'admin', '495ed4845515d52f29a95994b5924b3a', 'admin@admin.fr');
INSERT INTO `FC_game_events_users` VALUES (3, 'tata', '7e0f561b370cc58fa4fe04a766520a3d', 'test01@test01.fr');
-- --------------------------------------------------------
--
-- Structure de la table `FC_game_events_users_data`
--
CREATE TABLE `FC_game_events_users_data` (
`user_id` int(11) NOT NULL auto_increment,
`site` text collate latin1_general_ci NOT NULL,
`vocal` enum('Mumble','TeamSpeak 2','TeamSpeak 3','Skype','Ventrilo') collate latin1_general_ci NOT NULL,
`ipvocal` varchar(22) collate latin1_general_ci NOT NULL,
`serveurjeu` enum('Priver','Public') collate latin1_general_ci NOT NULL,
`ipserveur` varchar(22) collate latin1_general_ci NOT NULL,
PRIMARY KEY (`user_id`),
UNIQUE KEY `user_id_UNIQUE` (`user_id`),
KEY `fk_FC_game_events_events_FC_game_events_users_data1` (`user_id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci AUTO_INCREMENT=1 ;
--
-- Contenu de la table `FC_game_events_users_data`
--
--
-- Contraintes pour les tables exportées
--
--
-- Contraintes pour la table `FC_game_events_connexions`
--
ALTER TABLE `FC_game_events_connexions`
ADD CONSTRAINT `fk_connexsions_login` FOREIGN KEY (`login`) REFERENCES `FC_game_events_users` (`login`) ON DELETE NO ACTION ON UPDATE CASCADE;
--
-- Contraintes pour la table `FC_game_events_events`
--
ALTER TABLE `FC_game_events_events`
ADD CONSTRAINT `fk_FC_game_events_events_FC_game_events_jeux1` FOREIGN KEY (`nom_jeu`) REFERENCES `FC_game_events_jeux` (`nom_jeu`) ON DELETE NO ACTION ON UPDATE CASCADE,
ADD CONSTRAINT `fk_FC_game_events_events_FC_game_events_teams1` FOREIGN KEY (`team_id`) REFERENCES `FC_game_events_teams` (`team_id`) ON DELETE NO ACTION ON UPDATE SET NULL,
ADD CONSTRAINT `fk_FC_game_events_events_FC_game_events_users1` FOREIGN KEY (`createur`) REFERENCES `FC_game_events_users` (`user_id`) ON DELETE NO ACTION ON UPDATE CASCADE;
--
-- Contraintes pour la table `FC_game_events_jeux_users`
--
ALTER TABLE `FC_game_events_jeux_users`
ADD CONSTRAINT `fk_FC_game_events_jeux_has_FC_game_events_users_FC_game_event1` FOREIGN KEY (`nom_jeu`) REFERENCES `FC_game_events_jeux` (`nom_jeu`) ON DELETE CASCADE ON UPDATE CASCADE,
ADD CONSTRAINT `fk_FC_game_events_jeux_has_FC_game_events_users_FC_game_event2` FOREIGN KEY (`user_id`) REFERENCES `FC_game_events_users` (`user_id`) ON DELETE CASCADE ON UPDATE CASCADE;
--
-- Contraintes pour la table `FC_game_events_team_members`
--
ALTER TABLE `FC_game_events_team_members`
ADD CONSTRAINT `fk_FC_game_events_teams_has_FC_game_events_users_FC_game_even1` FOREIGN KEY (`team_id`) REFERENCES `FC_game_events_teams` (`team_id`) ON DELETE CASCADE ON UPDATE CASCADE,
ADD CONSTRAINT `fk_FC_game_events_teams_has_FC_game_events_users_FC_game_even2` FOREIGN KEY (`user_id`) REFERENCES `FC_game_events_users` (`user_id`) ON DELETE CASCADE ON UPDATE CASCADE;
--
-- Contraintes pour la table `FC_game_events_teams`
--
ALTER TABLE `FC_game_events_teams`
ADD CONSTRAINT `fk_FC_game_events_teams_FC_game_events_users1` FOREIGN KEY (`createur`) REFERENCES `FC_game_events_users` (`user_id`) ON DELETE NO ACTION ON UPDATE CASCADE,
ADD CONSTRAINT `fk_FC_game_events_teams_FC_game_events_users2` FOREIGN KEY (`chef`) REFERENCES `FC_game_events_users` (`user_id`) ON DELETE NO ACTION ON UPDATE NO ACTION;
--
-- Contraintes pour la table `FC_game_events_users_data`
--
ALTER TABLE `FC_game_events_users_data`
ADD CONSTRAINT `fk_FC_game_events_events_FC_game_events_users_data1` FOREIGN KEY (`user_id`) REFERENCES `FC_game_events_users` (`user_id`) ON DELETE CASCADE ON UPDATE CASCADE;
Reponse de xoops après le clic installer le module
Can't create table './db346523038/#sql-30f_3351a.frm' (errno: 150)
Si je suprime les contraintes du fichier mysql.sql, le script fonctionne tres bien. Avez-vous une idée du problème, ou est ce que xoops n'arrive pas a lire les contraintes entre des tables au moment d'une installation .
Dans l'attente d'une réponse, passer une bonne journée tout le monde.
|