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

Requêtes MySQL Discussion :

Création de tables et Foreign Keys


Sujet :

Requêtes MySQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    43
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 43
    Par défaut Création de tables et Foreign Keys
    Bonjour,
    En développement et en local j'utilise MySql et Adminer pour gérer les tables.
    Pour mettre l'appli en ligne, je génère un export depuis adminer que j'essaye d'intégrer dans ma BDD de prod en passant par PhpMyAdmin.
    Je ne parviens pas à créer les tables qui ont des foreign keys, il y a une erreur :

    #1005 - Ne peut créer la table `xxxxxxx`.`md_articles` (Errcode: 150 "Foreign key constraint is incorrectly formed") (Détails…)

    Or le script SQL collé ci-dessous, je peux le jouer et le rejouer à l'infini dans adminer sans avoir aucune erreur.

    Le script SQL :
    Code SQL : 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
    SET foreign_key_checks = 0;
    DROP TABLE IF EXISTS `md_articles`;
    CREATE TABLE `md_articles` (
      `id` int(11) NOT NULL AUTO_INCREMENT,
      `title` varchar(128) NOT NULL,
      `subtitle` mediumtext NOT NULL,
      `content` mediumtext NOT NULL,
      `created_at` datetime NOT NULL,
      `updated_at` datetime DEFAULT NULL,
      `deleted_at` datetime DEFAULT NULL,
      `url` varchar(160) DEFAULT NULL,
      `author_id` int(11) NOT NULL,
      `category_id` int(11) NOT NULL,
      PRIMARY KEY (`id`),
      KEY `author_id` (`author_id`),
      KEY `category_id` (`category_id`),
      CONSTRAINT `articles_ibfk_1` FOREIGN KEY (`author_id`) REFERENCES `md_authors` (`id`),
      CONSTRAINT `articles_ibfk_2` FOREIGN KEY (`category_id`) REFERENCES `md_categories` (`id`)
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
    Quelqu'un voit quelquechose que je ne vois pas ?

  2. #2
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 633
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : bourreau
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 10 633
    Billets dans le blog
    10
    Par défaut
    Bonjour,

    Vérifiez que les noms de colonnes sont identiques dans les deux tables et que leur type est bien le même

    Et pensez à encadrer votre code avec les balises CODE (bouton # de la barre d'icones), ça facilite la lecture en appliquant la coloration syntaxique
    Là je l'ai fait pour vous, mais pensez-y la prochaine fois


    EDIT : au cas où le script aurait été modifié à la main, vérifiez aussi que le DDL de création des tables référencées (donc md_authors et md_categories) est bien positionné avant le script de la table md_articles en erreur.

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    43
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 43
    Par défaut
    Ok, merci pour tout.
    J'ai abandonné adminer, créé les tables "à la main" dans phpmyadmin local. Comme ça, plus de pb.

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    43
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 43
    Par défaut
    Citation Envoyé par escartefigue Voir le message
    au cas où le script aurait été modifié à la main, vérifiez aussi que le DDL de création des tables référencées (donc md_authors et md_categories) est bien positionné avant le script de la table md_articles en erreur.
    J'avoue avoir réalisé tellement de tentatives que je ne sais plus...
    C'est sans doute pour ça que l'export de phpmyadmin découple les opérations, dans l'ordre :
    - création de toutes les tables,
    - création de tous les index, keys, etc
    - autoincréments
    - création des contraintes.

    Merci

  5. #5
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 633
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : bourreau
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 10 633
    Billets dans le blog
    10
    Par défaut
    Oui c'est pour ça, de même, les logiciels de modélisation (power designer, DBMain, Looping), produisent le script dans le bon ordre, sinon ça ne peut pas fonctionner.
    Passez le sujet à "Résolu" avec bouton ad hoc si c'est bien le cas

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

Discussions similaires

  1. Newbie PgSQL->Probleme Creation de table avec FOREIGN KEY
    Par ralkif dans le forum PostgreSQL
    Réponses: 9
    Dernier message: 07/03/2006, 21h59
  2. Création d'une table avec foreign key.
    Par Paulinho dans le forum Débuter
    Réponses: 6
    Dernier message: 01/12/2005, 18h47
  3. [mysql]table avec foreign key
    Par samjung dans le forum Langage SQL
    Réponses: 24
    Dernier message: 24/11/2005, 14h42
  4. Création d'une table avec foreign key
    Par lepierre dans le forum Langage SQL
    Réponses: 5
    Dernier message: 17/09/2004, 14h20
  5. Probleme 'ALTER TABLE' et 'FOREIGN KEY'
    Par maahta dans le forum SQL Procédural
    Réponses: 2
    Dernier message: 30/09/2003, 14h25

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