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

PHP & Base de données Discussion :

[SQL] FOREIGN KEY lors de la création de la base


Sujet :

PHP & Base de données

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    42
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 42
    Points : 24
    Points
    24
    Par défaut [SQL] FOREIGN KEY lors de la création de la base
    Bonjour,

    Je suis sous Wamp 5 (MySQL 5.0.21-community-nt; PHP 5.1.4; PhpMyAdmin 2.8.0.3 et Apache/2.0.55 (Win32) sous Wxp.

    Je tente d'importer un fichier sql pour créer les tables de ma base Films.
    L'import se plante lors de l'importation de la première table indiquant des clés étrangères (Film). J'obtiens un numéro d'erreur 1005 lors de la commande CREATE TABLE, et un message d'erreur de numéro 150.
    Cela signigie bien que la création de la table a échoué à cause de la contrainte de clé étrangère, qui n'a pas été correctement formulée ?
    Je me suis contenté d'utiliser un fichier sql d'un livre que voici :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    #
    #   Commandes de création de la base
    #
     
    # Pour se connecter toujours à la bonne base
     
    USE Films;
     
    DROP TABLE IF EXISTS Film;  
    DROP TABLE IF EXISTS Artiste;  
    DROP TABLE IF EXISTS Notation;  
    DROP TABLE IF EXISTS Internaute;  
    DROP TABLE IF EXISTS Pays;  
    DROP TABLE IF EXISTS Role;  
     
    # Création des tables                             
     
    CREATE TABLE Internaute (email VARCHAR (40) NOT NULL, 
                             nom VARCHAR (30) NOT NULL ,
                             prenom VARCHAR (30) NOT NULL,
                             motDePasse VARCHAR (32) NOT NULL,
                             anneeNaiss INTEGER,
                             PRIMARY KEY (email));
     
    CREATE TABLE Pays (code    VARCHAR(4) NOT NULL,
                       nom  VARCHAR (30) DEFAULT 'Inconnu' NOT NULL,
                       langue VARCHAR (30) NOT NULL,
                       PRIMARY KEY (code));
     
    CREATE TABLE Artiste  (id INTEGER AUTO_INCREMENT NOT NULL,
                           nom VARCHAR (30) NOT NULL,
                           prenom VARCHAR (30) NOT NULL,
                           anneeNaiss INTEGER,
                           PRIMARY KEY (id),
                           UNIQUE (nom, prenom));
     
    CREATE TABLE Film  (titre    VARCHAR (50) NOT NULL,
                        annee    INTEGER NOT NULL,
                        idMES    INTEGER,
                        genre ENUM ('Histoire', 'Drame',
                                    'Suspense',  'Catastrophe', 
                                    'Policier', 'Thriller', 'Aventures',
                                    'Science-fiction', 'Comédie', 
                                    'Comédie dramatique',
                                    'Comédie sentimentale', 
                                    'Fantastique', 'Horreur', 
                                    'Action',  'Guerre', 
                                    'Dessin animé', 'Documentaire',  
                                    'Western') NOT NULL,
                        resume      TEXT,
                        codePays    VARCHAR (4),
                        PRIMARY KEY (titre),
                        FOREIGN KEY (idMES) REFERENCES Artiste,
                        FOREIGN KEY (codePays) REFERENCES Pays);
     
    CREATE TABLE Notation (titre VARCHAR (50) NOT NULL,
                           email  VARCHAR (40) NOT NULL,
                           note  INTEGER NOT NULL,
                           PRIMARY KEY (titre, email),
                           FOREIGN KEY (titre) REFERENCES Film,
                           FOREIGN KEY (email) REFERENCES Internaute);
     
    CREATE TABLE Role (titre  VARCHAR (50) NOT NULL,
                       idActeur INTEGER NOT NULL,
                       nomRole  VARCHAR(30), 
                       PRIMARY KEY (titre,idActeur),
                       FOREIGN KEY (titre) REFERENCES Film,
                       FOREIGN KEY (idActeur) REFERENCES Artiste);
     
    # On quitte mysql
     
    exit
    Le problème ne pourrait-il pas venir de PhpMyAdmin ou de Wamp 5 si on postule que le fichier sql importé est censé être correcte ?

    Merci pour vos avis.

    Rosa L.

  2. #2
    Invité
    Invité(e)
    Par défaut
    je viens de créer une bdd films [phpMyAdmin 2.6.1 MySQL 4.1.9-max ], jai copié coller ton code et ça marche

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    42
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 42
    Points : 24
    Points
    24
    Par défaut

    Alors qu'elle conclusion dois-je tirer ?

    Rosa L.

  4. #4
    Invité
    Invité(e)
    Par défaut
    c bizar faudrait quune personne avec la meme config que toi le teste

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    42
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 42
    Points : 24
    Points
    24
    Par défaut
    Je tente de créer ma base avec la console MySQL de Wamp 5 (après avoir supprimer -difficilement- la base).
    CREATE DATABASE Films;
    Mais, ensuite, j'ai un problème pour importer le fichier sql. Je tape après le prompt "mysql>" :
    < Films.sql
    Comme l'indique le bouquin... Et j'ai une erreur de message, avec ou sans ;
    Quelle est la bonne syntaxe ?
    Rosa L.

  6. #6
    Membre à l'essai
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    42
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 42
    Points : 24
    Points
    24
    Par défaut
    Trouvé !
    Le bouquin et le code correspondant (sur Internet) ne fait pas mention des noms de colonne dans la table référencée.
    J'ai donc rajouté (id) pour l'exemple suivant, ainsi que pour les autres :
    FOREIGN KEY (idMES) REFERENCES Artiste(id),

    Tout est bien passé cette fois, avant de planter sur la syntaxe de la dernière ligne : exit
    J'ai mis un ";", puis l'ai supprimé...
    J'obtiens alors une erreur 1005/121 cette fois sur la table Internaute :
    ----------- Réponse de PhpMyAdmin lors de l'import de Films.sql -----
    Erreur

    requête SQL:

    # Création des tables
    CREATE TABLE Internaute(
    email VARCHAR( 40 ) NOT NULL ,
    nom VARCHAR( 30 ) NOT NULL ,
    prenom VARCHAR( 30 ) NOT NULL ,
    motDePasse VARCHAR( 32 ) NOT NULL ,
    anneeNaiss INTEGER,
    PRIMARY KEY ( email )
    );

    MySQL a réponduocumentation
    #1005 - Can't create table '.\films\internaute.frm' (errno: 121)
    ------------------------
    C'est à ne rien y comprendre !

    Rosa L.

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    42
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 42
    Points : 24
    Points
    24
    Par défaut [resolu]
    Ca fonctionne !!!
    Pourquoi ?
    A force de tout essayer, je ne sais plus la raison :
    - j'ai utilisé UTF8_Unicode_ci pour MySQL et la base
    - j'ai supprimé la commande exit à la fin du fichier sql

    Quant à savoir pourquoi les noms des colonnes n'étaient pas listées dans les FOREIGN KEY (et dans le bouquin et dans le fichier numérique sql...
    Ca dépasse l'entendement.
    Merci en tous cas pour l'aide.

    Rosa L.

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

Discussions similaires

  1. Réponses: 11
    Dernier message: 16/05/2014, 16h52
  2. Réponses: 1
    Dernier message: 19/07/2007, 14h53
  3. [PL/SQL] [9i] Pblm lors de la création de triggers
    Par ftrifiro dans le forum Oracle
    Réponses: 3
    Dernier message: 27/06/2006, 15h08
  4. message d'erreur lors de la création de la base
    Par ber_jp dans le forum PostgreSQL
    Réponses: 3
    Dernier message: 20/05/2004, 12h15
  5. message d'erreur lors de la création d'une base
    Par franculo_caoulene dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 16/04/2004, 15h47

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