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

Administration MySQL Discussion :

Problème avec InnoDB


Sujet :

Administration MySQL

  1. #1
    Membre habitué
    Inscrit en
    Février 2011
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Février 2011
    Messages : 12
    Par défaut Problème avec InnoDB
    Bonjour,

    Je suis en train d'essayer de comprendre l’utilisé et le fonctionnement de ce moteur InnoDB mais rien à faire, je ne comprend pas...

    Je dois démontrer son utilité....comment ? Comment faire en pratique pour voir une différence ?


    Merci de votre aide Un bon dimanche à tous le monde

  2. #2
    Expert confirmé
    Profil pro
    Inscrit en
    Août 2008
    Messages
    2 954
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 2 954
    Par défaut
    J'imagine que tu veux comparer InnoDB avec MyIsam. C'est simple avec InnoDB tu peux gérer :
    1/ L'intégrité référentielle, cf les contraintes clés étrangères
    2/ Les transactions, cf une succession d'opérations insert update delete qui doivent être toutes valides (commit) ou toutes invalidées (rollback) en cas de problèmes/annomalies

    Il y a surement plein d'autres avantages à InnoDB comparé à MyIsam, mais ces 2 là sont vraiment primordiales.

    D'un point de vue assez critique je dirais que MyIsam est un jouet (mais qui peut avoir son utilité) et InnoDB permet des développements plus "professionnels"

    As tu lu le tutoriel du site sur InnoDB ?

  3. #3
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    22 002
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 22 002
    Billets dans le blog
    6
    Par défaut
    MySQL... développement professionnel ? Laissez moi rire !!!
    A lire sur les inepties du pseudo SGBDR qu'est MySQL : http://blog.developpez.com/sqlpro/p9...udre-aux-yeux/

    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

  4. #4
    Membre habitué
    Inscrit en
    Février 2011
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Février 2011
    Messages : 12
    Par défaut
    Merci bien j'ai fait quelques tests assez concluant grâce au tutoriel

    Cependant je n'arrive pas la commande ON DELETE SET DEFAULT...

    Quelle est l'erreur de syntaxe ? Merci


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ALTER TABLE T_Pull ADD FOREIGN KEY (FK_Couleur) REFERENCES T_Couleur ( ID_Couleur) ON DELETE SET DEFAULT ='1'

  5. #5
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    22 002
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 22 002
    Billets dans le blog
    6
    Par défaut
    Il n'y en as pas, comme je vous l'ais dit dans mon pots précédent, MySQL est un SGBRD (hum.. hum...) très limité. ON DELETE SET DEFAULT n'est tout simplement pas implémenté !
    C'est pervers, car le parseur ne dit rien, car la syntaxe est validé, mais MySQL ne fait rien... !

    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

  6. #6
    Membre habitué
    Inscrit en
    Février 2011
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Février 2011
    Messages : 12
    Par défaut
    Ahhh merci bien

    (encore une autre question pendant que je suis )

    j'exécute la requête suivante:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    ALTER TABLE T_Pull 
    ADD FOREIGN KEY (FK_Couleur) 
        REFERENCES T_Couleur ( ID_Couleur) 
        ON UPDATE CASCADE;
    ça passe !

    après je veux tester qu'elle fonctionne bien en faisant:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    UPDATE T_Couleur SET ID_Couleur =20 WHERE ID_Couleur = 1
    Et là....erreur !!

    pouvez-vous m'aider ? Merci encore

  7. #7
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    22 002
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 22 002
    Billets dans le blog
    6
    Par défaut
    1) message d'erreur ?
    2) version de MySQL ??
    3) jeu d'essai ???

    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

  8. #8
    Membre habitué
    Inscrit en
    Février 2011
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Février 2011
    Messages : 12
    Par défaut
    J'utilise EasyPHP pour mes tests

    voic le message d'erreur

    #1452 - Cannot add or update a child row: a foreign key constraint fails (`test_inodb`.`t_pull`, CONSTRAINT `t_pull_ibfk_2` FOREIGN KEY (`FK_Couleur`) REFERENCES `t_couleur` (`ID_Couleur`) ON UPDATE CASCADE)
    Le but du jeu est que j'ai 2 tables: T_Pull et T_Couleur

    Les pulls ont tous une couleur (relié par FK une T_pull.FK_Couleur qui pointe sur T_Couleur.ID_Couleur)

  9. #9
    Membre habitué
    Inscrit en
    Février 2011
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Février 2011
    Messages : 12
    Par défaut
    Je viens de faire un test:

    Au lieu de lancé la requête alter table, j'insère mon update dans ma création de table comme suit:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    CREATE TABLE T_Pull ( ID_Pull INT NOT NULL AUTO_INCREMENT,
    							Taille VARCHAR(50) NULL,
    							FK_Couleur INT(2),
    							FOREIGN KEY (FK_Couleur) REFERENCES T_Couleur(ID_Couleur) ON UPDATE CASCADE  /*ON DELETE CASCADE */, /* Le ON DELETE CASCADE permet la supprimer les enregistrement de la table secondaire */
    							PRIMARY KEY (ID_Pull)
    							)
    							TYPE = InnoDB;
    Et là je j'exécute:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    UPDATE T_Couleur SET ID_Couleur =20 WHERE ID_Couleur = 1
    ça marche !


    Mais j'aimerai bien réussi ma requête à l'aide de la commande Alter Table....est-ce possible ? (je vous le remet..)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ALTER TABLE T_Pull ADD FOREIGN KEY (FK_Couleur) REFERENCES T_Couleur(ID_Couleur) ON UPDATE CASCADE;

  10. #10
    Expert éminent
    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 818
    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 818
    Billets dans le blog
    14
    Par défaut
    Le message d'erreur que tu as rencontré signifie que MySQL a trouvé au moins une ligne où la valeur de la colonne portant la clé étrangère n'a pas de correspondance dans la colonne de référence.

    Quand tu ajoutes une clé étrangère à une table déjà remplie, il faut d'abord s'assurer que la colonne clé étrangère ne comprend que des valeurs respectant la contrainte de clé étrangère.

    Par contre quand tu crées une table, par définition elle est vide donc pas de problème pour créer la clé étrangère.
    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 !

Discussions similaires

  1. problème avec pour activer Innodb sur Mysql
    Par jarode2 dans le forum MySQL
    Réponses: 2
    Dernier message: 28/09/2009, 18h21
  2. Problème avec la création de mes tables innoDB (Pb de Foreign Key)
    Par pofexpray dans le forum SQL Procédural
    Réponses: 7
    Dernier message: 08/03/2007, 08h44
  3. [MySQL] Problème avec InnoDB
    Par Jovial dans le forum PHP & Base de données
    Réponses: 9
    Dernier message: 17/08/2006, 16h54
  4. Problème de requete avec Innodb
    Par silef dans le forum Requêtes
    Réponses: 3
    Dernier message: 14/04/2004, 12h54
  5. Problème avec la mémoire virtuelle
    Par Anonymous dans le forum CORBA
    Réponses: 13
    Dernier message: 16/04/2002, 16h10

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