Bonjour à tous.
Dans le cadre de mon site web, je gère des licences utilisateur.
J'avais créé une table simple pour mémoriser chaque licence (un peu longue à générer).
Puis, comme j'ai besoin d'un champs (mon_champs) spécifique contenu dans une table de Communuty Builder, j'ai écris ce code :
Et puis, je me suis dit, ce serait bien d'attacher ma table à cette table utilisateur de sorte que, lorsqu'un compte est supprimé, l'entrée correspondante dans ma table soit retirée automatiquement.
J'ai donc tenté de créer dans ma table, une clef étrangère sur #__comprofiler.user_id (ou #__comprofiler.id).
J'ai donc tenté d'exécuter la requête suivante :
Nb : xxxx_comprofiler : j'ai mis xxxx car joomla préfixe ses table par une identifiant mais dans le vrai code, j'ai mis l'identifiant correcte.
Impossible de créer la table avec cette clef étrangère, résultat : #1005 - Can't create table 'ttgest_joomla.tlicenses' (errno: 150)
Impossible de savoir pourquoi !
Les champs existent bien, les tables sont bien référencées. C'est pourtant pas compliqué de créer une clef étrangère, non ?
Dans le cadre de mon site web, je gère des licences utilisateur.
J'avais créé une table simple pour mémoriser chaque licence (un peu longue à générer).
Puis, comme j'ai besoin d'un champs (mon_champs) spécifique contenu dans une table de Communuty Builder, j'ai écris ce code :
Code:
user = &JFactory::getuser(); if ($user->id == 0) { // Not connected => Display error message printf('<b><font color="blue">%s</font></b>',_('You must be connected...')); } else { // printf("Nickname = %s<br>ID = %d<br>",$user->username,$user->id); // #__ replace the database table prefix used by Joomla $query = sprintf("SELECT mon_champs FROM #__comprofiler WHERE user_id=%d",$user->id);
J'ai donc tenté de créer dans ma table, une clef étrangère sur #__comprofiler.user_id (ou #__comprofiler.id).
J'ai donc tenté d'exécuter la requête suivante :
Code:
CREATE TABLE MaTable ( idLicense INT NOT NULL AUTO_INCREMENT, fkuserid INT NOT NULL, PRIMARY KEY(idLicense), FOREIGN KEY(fkuserid) REFERENCES xxxx_comprofiler(id) ON DELETE CASCADE ON UPDATE CASCADE);
Impossible de créer la table avec cette clef étrangère, résultat : #1005 - Can't create table 'ttgest_joomla.tlicenses' (errno: 150)
Impossible de savoir pourquoi !
Les champs existent bien, les tables sont bien référencées. C'est pourtant pas compliqué de créer une clef étrangère, non ?
Commentaire