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

MySQL Discussion :

#1068 - Multiple primary key defined


Sujet :

MySQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Étudiant
    Inscrit en
    Mars 2013
    Messages
    388
    Détails du profil
    Informations personnelles :
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2013
    Messages : 388
    Par défaut #1068 - Multiple primary key defined
    Bonjour,
    Je n'arrive pas à comprendre pourquoi j'ai cette erreur, vu que je n'ai défini qu'une seule clé primaire par table.
    J'ai deux tables :
    - personne ( id_pers, nom_pers, prenom_pers...........)
    - structure (id_struct, nom_contact,...............,id_pers)

    Je n'arrive pas à mettre id_pers comme clé étrangère dans la table structure!

    Voici mon code SQL:
    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
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    -- phpMyAdmin SQL Dump
    -- version 4.3.12
    -- http://www.phpmyadmin.net
    --
    -- Client :  localhost
    -- Généré le :  Lun 23 Mars 2015 à 14:25
    -- Version du serveur :  5.5.23
    -- Version de PHP :  5.6.5
     
    SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO";
    SET time_zone = "+00:00";
     
     
    /*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
    /*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
    /*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
    /*!40101 SET NAMES utf8 */;
     
    --
    -- Base de données :  `croix_rouge`
    --
     
    -- --------------------------------------------------------
     
    --
    -- Structure de la table `personne`
    --
     
    CREATE TABLE IF NOT EXISTS `personne` (
      `id_pers` int(11) NOT NULL,
      `nom_pers` varchar(30) NOT NULL,
      `prenom_pers` varchar(40) NOT NULL,
      `fct_pers` varchar(40) NOT NULL,
      `tel_m` varchar(11) NOT NULL,
      `tel_d` varchar(11) NOT NULL,
      `tel_p` varchar(11) NOT NULL,
      `mail_pers` varchar(50) NOT NULL,
      `fax_pers` varchar(11) NOT NULL
    ) ENGINE=InnoDB AUTO_INCREMENT=2093 DEFAULT CHARSET=latin1;
     
    -- --------------------------------------------------------
     
    --
    -- Structure de la table `structure`
    --
     
    CREATE TABLE IF NOT EXISTS `structure` (
      `id_struct` int(11) NOT NULL,
      `typologie` varchar(40) NOT NULL,
      `nom_contact` varchar(30) NOT NULL,
      `thematique` varchar(30) NOT NULL,
      `desc_contact` text NOT NULL,
      `nom_struct` varchar(30) NOT NULL,
      `nom_service` varchar(30) NOT NULL,
      `adres_struct` varchar(50) NOT NULL,
      `tel_struct` varchar(20) NOT NULL,
      `fax_struct` varchar(20) NOT NULL,
      `page_web` varchar(20) NOT NULL,
      `mail_struct` varchar(20) NOT NULL,
      `comment_struct` text NOT NULL,
      `id_pers` int(11) NOT NULL
    ) ENGINE=InnoDB AUTO_INCREMENT=102 DEFAULT CHARSET=latin1;
     
    --
    -- Contenu de la table `structure`
    --
     
     
     
    --
    -- Index pour les tables exportées
    --
     
    --
    -- Index pour la table `personne`
    --
    ALTER TABLE `personne`
      ADD PRIMARY KEY (`id_pers`);
     
    --
    -- Index pour la table `structure`
    --
    ALTER TABLE `structure`
      ADD PRIMARY KEY (`id_struct`);
     
    --
    -- AUTO_INCREMENT pour les tables exportées
    --
     
    --
    -- AUTO_INCREMENT pour la table `personne`
    --
    ALTER TABLE `personne`
      MODIFY `id_pers` int(11) NOT NULL AUTO_INCREMENT;
    --
    -- AUTO_INCREMENT pour la table `structure`
    --
    ALTER TABLE `structure`
      MODIFY `id_struct` int(11) NOT NULL AUTO_INCREMENT;
     
    ALTER TABLE `structure`  
      ADD CONSTRAINT fk_personne_structure FOREIGN KEY (id_pers) REFERENCES personne(id_pers);  
     
    /*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
    /*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
    /*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
    Merci

  2. #2
    Expert éminent
    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 815
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 815
    Billets dans le blog
    14
    Par défaut
    Je ne rencontre pas d'erreur en exécutant votre script !
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole, en retraite... mais toujours Autoentrepreneur à l'occasion.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

  3. #3
    Membre éclairé
    Profil pro
    Étudiant
    Inscrit en
    Mars 2013
    Messages
    388
    Détails du profil
    Informations personnelles :
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2013
    Messages : 388
    Par défaut
    Merci pour votre réponse.
    Alors ça m'étonne
    J'ai deux erreurs qui apparaissent dans phpMyAdmin, je ne sais pas si ça a un rapport :
    Erreur 1 :
    Le stockage de configurations phpMyAdmin n'est pas complètement configuré, certaines fonctionnalités ont été désactivées. Voir l'analyse du problème.
    Ou encore allez sur l'onglet «Opérations», de n'importe quelle base de données pour l'y placer à cet endroit.
    >>L'analyse du problème
    Configuration de pmadb… en erreur
    Fonctions relationnelles Désactivé
    Erreur 2 :
    Vous devez ajouter dans le fichier de configuration une phrase de passe secrète (blowfish_secret).

  4. #4
    Expert éminent
    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 815
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 815
    Billets dans le blog
    14
    Par défaut
    En principe, ça n'a pas de rapport. phpMyAdmin peut maintenant utiliser sa propre base de données pour enregistrer certaines choses... je n'ai pas encore creusé le problème.

    Mais votre script est syntaxiquement correct et si vous le lancez en console, il devrait s'exécuter sans problème.
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole, en retraite... mais toujours Autoentrepreneur à l'occasion.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

  5. #5
    Membre éclairé
    Profil pro
    Étudiant
    Inscrit en
    Mars 2013
    Messages
    388
    Détails du profil
    Informations personnelles :
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2013
    Messages : 388
    Par défaut
    Je vous remercie.

    En fait, je crois savoir à quoi est due cette erreur, cette erreur apparait quand j'exécute ce script 2 fois, donc la base était déjà créée.
    Et quand j'exécute le script 1 fois, j'ai cette erreur de syntaxe :

    Erreur

    Requête SQL :

    ADD CONSTRAINT fk_personne_structure FOREIGN KEY (id_pers) REFERENCES personne(id_pers);

    MySQL a répondu: Documentation
    #1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'ADD CONSTRAINT fk_personne_structure FOREIGN KEY (id_pers) REFERENCES personne(i' at line 1

  6. #6
    Expert éminent
    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 815
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 815
    Billets dans le blog
    14
    Par défaut
    Effectivement, si vous exécutez deux fois le script, comme tout existe déjà, ça plante, c'est normal.

    Pour ma part, j'ai d'abord exécuté chaque requête une à une pour bien surveiller puis j'ai supprimé les deux tables créées et j'ai ensuite exécuté le script en entier et je n'ai eu aucune erreur dans les deux cas.

    You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'ADD CONSTRAINT fk_personne_structure FOREIGN KEY (id_pers) REFERENCES personne(i' at line 1
    Quand MySQL dit : near "du texte SQL...", ça veut en principe dire que l'erreur de syntaxe se situe juste avant le texte cité. Comme ceci est le début d'une requête de votre script, peut-être avez-vous copié collé un bout de ce qui précède avec ?
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole, en retraite... mais toujours Autoentrepreneur à l'occasion.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

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

Discussions similaires

  1. [ODBC] Recherche du champ qui est Primary Key
    Par XtofRoland dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 07/02/2006, 11h43
  2. PRIMARY KEY - UNIQUE - INDEX
    Par Thierry8 dans le forum Requêtes
    Réponses: 4
    Dernier message: 16/12/2005, 23h28
  3. pb de primary key sur 2 colonnes
    Par new_wave dans le forum Designer
    Réponses: 14
    Dernier message: 25/11/2005, 11h05
  4. DROP PRIMARY KEY
    Par popopopo dans le forum Langage SQL
    Réponses: 2
    Dernier message: 04/08/2005, 11h11
  5. BDD, r-a-z index et indice primary key ?
    Par lord_paco dans le forum MS SQL Server
    Réponses: 9
    Dernier message: 11/07/2003, 10h24

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