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 :

Erreur rencontrée lors d'une requête ALTER TABLE


Sujet :

Requêtes MySQL

  1. #1
    Membre du Club
    Étudiant
    Inscrit en
    Juin 2006
    Messages
    66
    Détails du profil
    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2006
    Messages : 66
    Points : 62
    Points
    62
    Par défaut Erreur rencontrée lors d'une requête ALTER TABLE
    Bonjour,

    Je souhaite modifier une table en ajoutant des colonnes et en modifiant l'index

    Pour l'ajout de colonne pas de probleme.

    Par contre je n'ai pas vu de requète permettant de directement modifier un index. J'ai donc voulu le supprimer puis le recréer tel que je le souhait

    voici la requete que j'utilise :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ALTER TABLE compteur DROP INDEX compteurIndex;
    il me met l'erreur suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Error on rename of '.\#sql-724_d8' to '.\compteur' (errno: 150)
    j'ai aussi essayer la requete suivante pour la suppression :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DROP INDEX compteurIndex ON compteur ;
    et j'obtien la même erreur.

    pouvez-vous m'expliquer ou est mon erreur?

    merci

  2. #2
    Expert éminent
    Avatar de qi130
    Homme Profil pro
    Expert Processus IT
    Inscrit en
    Mars 2003
    Messages
    3 911
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France

    Informations professionnelles :
    Activité : Expert Processus IT
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2003
    Messages : 3 911
    Points : 6 032
    Points
    6 032
    Par défaut
    Peux-tu fournir le script de création de cette table (y compris les index) ?

    Quelle version de MySQL ?

  3. #3
    Membre du Club
    Étudiant
    Inscrit en
    Juin 2006
    Messages
    66
    Détails du profil
    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2006
    Messages : 66
    Points : 62
    Points
    62
    Par défaut
    d'accords voici le script d'origine de la table
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    CREATE TABLE compteur
    (
    	IDENTIFIANT int(11) NOT NULL auto_increment,
    	FK_TYPE_DOM_IDENTIFIANT int(11) NOT NULL,
           VALEUR INT(11) NOT NULL,
    	PRIMARY KEY (IDENTIFIANT),
    	INDEX compteur_index0 (FK_TYPE_DOM_IDENTIFIANT)
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
     
    ALTER TABLE compteur
     ADD FOREIGN KEY (FK_TYPE_DOM_IDENTIFIANT)
     REFERENCES domaine (IDENTIFIANT);
    la table domaine :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    CREATE TABLE type_domaine
    (
    	IDENTIFIANT int(11) NOT NULL auto_increment,
            CODE VARCHAR(1) NOT NULL,
    	PRIMARY KEY (IDENTIFIANT)
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
    voici le script que j'exécute ensuite :
    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
     
    -- Suppresion de l'index
    ALTER TABLE compteur DROP INDEX compteur_index0;
     
    -- Ajout de colonne pour la table COMPTEUR
     
    ALTER TABLE compteur ADD `CODE_UTILISATEUR` VARCHAR(1) NOT NULL;
     
    ALTER TABLE compteur ADD `APPLICABLE` VARCHAR(1) NOT NULL;
     
    ALTER TABLE compteur ADD `FK_PART_IDENTIFIANT` int(11) NOT NULL;
     
    -- Création de l'index
    ALTER TABLE compteur ADD INDEX compteur_index0 ( FK_PART_IDENTIFIANT, FK_TYPE_DOM_IDENTIFIANT);
     
    -- Constraints for table COMPTEUR
     
    ALTER TABLE compteur
     ADD FOREIGN KEY (FK_PART_IDENTIFIANT)
     REFERENCES partenaire (IDENTIFIANT);
    la table partenaire à la même forme que la table domaine

    Pour la version, j'utilise mysql 1.2.8

  4. #4
    Expert éminent
    Avatar de qi130
    Homme Profil pro
    Expert Processus IT
    Inscrit en
    Mars 2003
    Messages
    3 911
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France

    Informations professionnelles :
    Activité : Expert Processus IT
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2003
    Messages : 3 911
    Points : 6 032
    Points
    6 032
    Par défaut
    Bien bien...
    InnoDB ne crée pas automatiquement les index nécessaires pour les clés étrangères : vous devez ls créer vous-même. Les index sont nécessaires pour accélérer les vérifications de contrainte, et éviter un scan de table.
    Cet index est bien créé, mais toi, tu cherches à le détruire, et MySQL n'est pas d'accord....
    http://dev.mysql.com/doc/refman/5.0/...nstraints.html

  5. #5
    Membre du Club
    Étudiant
    Inscrit en
    Juin 2006
    Messages
    66
    Détails du profil
    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2006
    Messages : 66
    Points : 62
    Points
    62
    Par défaut
    Ok merci pour ton aide

    D'après ce que tu dis je ne peut pas supprimer cette index, je vais donc créer un nouvelle index et laisser celui la comme il est. Mes requêtes prendrons l'index le plus approprier par la suite.

    mon autre solution était carrément de supprimer la table et la recréer
    ( enfin c'était trop extrême)

    encore merci.

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

Discussions similaires

  1. Erreur improbable lors d'une requête
    Par Leopard_ dans le forum VB.NET
    Réponses: 0
    Dernier message: 06/05/2013, 15h54
  2. [AJAX] Erreur vide lors d'une requête
    Par Dev222 dans le forum AJAX
    Réponses: 2
    Dernier message: 10/11/2012, 18h50
  3. Erreur 500 lors d'une requête http
    Par Sh4dow49 dans le forum Langage
    Réponses: 2
    Dernier message: 30/10/2008, 11h47
  4. Erreur #1064 lors d'une requête
    Par bigben89 dans le forum Langage SQL
    Réponses: 4
    Dernier message: 03/06/2008, 11h59
  5. Erreur 1005 lors d'une requete Alter
    Par yasmine* dans le forum Requêtes
    Réponses: 2
    Dernier message: 22/03/2007, 20h16

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