IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Installation MySQL Discussion :

Clés Etrangères : Erreur


Sujet :

Installation MySQL

  1. #1
    Membre régulier
    Inscrit en
    Avril 2006
    Messages
    238
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 238
    Points : 90
    Points
    90
    Par défaut Clés Etrangères : Erreur
    Bonjour,
    j'ai installé mySQL 5
    j'essaie de créer les tables suivantes :

    -- table groupe :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    CREATE TABLE `t_groupe` (
      `id_groupe` tinyint(4) NOT NULL auto_increment,
      `lib_groupe` varchar(20) character set latin1 collate latin1_general_cs NOT NULL,
      PRIMARY KEY  (`id_groupe`)
    ) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=4 ;
    ## table domaine
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    CREATE TABLE `t_domaine` (
      `id_domaine` int(4) NOT NULL auto_increment,
      `lib_domaine` varchar(20) character set latin1 collate latin1_general_cs NOT NULL,
      PRIMARY KEY  (`id_domaine`)
    ) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=2 ;
    Jusqu'à là, pas de problème.
    Quand je crée la table :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    CREATE TABLE `t_intervenant` (
      id_intervenant varchar(8) character set latin1 collate latin1_general_cs NOT NULL,
      prenom_nom varchar(30) character set latin1 collate latin1_general_cs NOT NULL,
      id_groupe tinyint(4) NOT NULL,
      actif tinyint(4) NOT NULL default '1',
      id_domaine tinyint(4) NOT NULL,
      PRIMARY KEY  (id_intervenant),
      FOREIGN KEY (id_domaine) REFERENCES t_domaine (id_domaine) ON DELETE CASCADE,
      FOREIGN KEY (id_groupe) REFERENCES t_groupe (id_groupe) ON DELETE CASCADE
    ) ENGINE=InnoDB DEFAULT CHARSET=latin1;
    J'ai :
    MySQL a réponduocumentation - Can't create table '.\suivi_activite\t_intervenant.frm' (errno: 150)

    d'ou vient le problème
    merci à vous
    (@_@)

  2. #2
    Membre régulier
    Inscrit en
    Avril 2006
    Messages
    238
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 238
    Points : 90
    Points
    90
    Par défaut
    Problème Résolu :
    C'était un problème de type (en vert)
    (@_@)

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    45
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 45
    Points : 36
    Points
    36
    Par défaut
    Les champs que tu déclare en clé étrangère doivent se trouver dans la clé primaire il me semble.

    comme ceci :

    DROP TABLE Acteur;
    CREATE TABLE Acteur (
    nact NUMBER(4) ,
    nom VARCHAR2(50) ,
    prenom VARCHAR2(50) ,
    annee_nais NUMBER(4) ,
    nationalite VARCHAR2(30) ,
    CONSTRAINT Pknact PRIMARY KEY (nact) );

    DROP TABLE Participation;
    CREATE TABLE Participation (
    nact NUMBER(4) ,
    nfilm NUMBER(7) ,
    salaire NUMBER(10) ,
    CONSTRAINT Pknfilm PRIMARY KEY (nfilm,nact),
    CONSTRAINT Fknfilm FOREIGN KEY (nfilm) REFERENCES Film (nfilm),
    CONSTRAINT Fknact FOREIGN KEY (nact) REFERENCES Acteur (nact)
    );

    tu vois?

    sinon voila quelqu'un qui a eu le meme pb que toi :

    ps : la table communes dont il parle correspond pour toi a ta table t_intervenant

    j'ai eu le même souci (version 4.0.21)
    il faut créer un index sur le champ de la clé étrangère dans ta table communes

    CREATE TABLE communes (
    codeSecteur INT,
    nom VARCHAR(30) NOT NULL,
    cp INT(5) NOT NULL,
    index (codeSecteur),
    FOREIGN KEY (codeSecteur) REFERENCES secteurs(idSecteur) ON DELETE CASCADE
    ) TYPE=InnoDB;

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Création de clés étrangères, erreur de syntaxe
    Par piotrr dans le forum SQL Procédural
    Réponses: 3
    Dernier message: 23/01/2008, 09h02
  2. Problème avec plusieurs clés etrangères
    Par rc-cheap dans le forum Requêtes
    Réponses: 3
    Dernier message: 06/07/2007, 11h42
  3. Paginate avec des conditions sur les clés etrangères.
    Par CeDRiC08 dans le forum Ruby on Rails
    Réponses: 3
    Dernier message: 03/07/2007, 09h49
  4. Auto jointure (externe) sur clés etrangères
    Par mauvais_karma dans le forum Langage SQL
    Réponses: 13
    Dernier message: 30/11/2006, 13h46
  5. Les Clés etrangères
    Par olive_le_malin dans le forum SQL Procédural
    Réponses: 2
    Dernier message: 13/06/2006, 15h58

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo