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 :

Create table et partitioning


Sujet :

Administration MySQL

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    90
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 90
    Points : 88
    Points
    88
    Par défaut Create table et partitioning
    Bonjour à tous,

    Je rencontre une erreur que je n'arrive vraiment pas à résoudre :

    Voici la requete :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    CREATE TABLE `maTable` (
      `NumberId` int(11) NOT NULL auto_increment,
       `StateOfResource` binary(1) default NULL,
       `destinationNumber` binary(10) NOT NULL,
       PRIMARY KEY  USING HASH (`NumberId`),
       UNIQUE KEY `MyDestinationNumber` USING HASH (`destinationNumber`)
     ) ENGINE=ndbcluster DEFAULT CHARSET=latin1 COLLATE=latin1_bin 
    PARTITION BY KEY (NumberId) ;
    Voici l'erreur produite :
    [CODE]
    ERROR 1503 (HY000): A UNIQUE INDEX must include all columns in the table's partitioning function
    [CODE]

    j'ai beau avoir lu attentivement la doc sur le partitioning je ne vois vraiment pas ce qui cloche...


    Je travail avec mysql 5.1.30 (en cluster) sous fedora 10.

    Merci

  2. #2
    Rédacteur/Modérateur

    Avatar de Antoun
    Homme Profil pro
    Architecte décisionnel
    Inscrit en
    Octobre 2006
    Messages
    6 281
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Architecte décisionnel
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2006
    Messages : 6 281
    Points : 11 737
    Points
    11 737
    Par défaut
    Si je comprends bien le message d'erreur, le problème est que destinationNumber n'est pas un critère de partitionnement.
    Antoun
    Expert Essbase, BO, SQL

    La bible d'Essbase, 2ème édition

  3. #3
    Membre éprouvé
    Avatar de Sivrît
    Profil pro
    Inscrit en
    Février 2006
    Messages
    953
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Février 2006
    Messages : 953
    Points : 1 249
    Points
    1 249
    Par défaut
    Citation Envoyé par Antoun Voir le message
    Si je comprends bien le message d'erreur, le problème est que destinationNumber n'est pas un critère de partitionnement.
    En fait si j'ai bien compris le problème est plutôt dans l'autre sens : Il faudrait qur toutes les colonnes servant au partitionnement (ici `NumberId`) fassent parti de la clause d'unicité. L'indexe devrait donc porter sur (`NumberId`, `destinationNumber`), mais ça en fait un peu perdre l'intérêt. Ca semble n'être pas mentionné dans la documentation.

    Je présume que c'est une contrainte technique. Les indexes des différentes partitions sont séparés. Si les critères de partitionnement sont un sous ensemble des critères d'unicité, l'unicité globale se résume à vérifier l'unicité dans chaque partition. Sinon il faudrait s'assurer qu'une valeur dans une partition ne se retrouve pas dans une autre partition et ça devient vite très moche... Cela dit en écrivant ça je m'aperçois que c'est surtout un problème pour la création de l'indexe unique sur une table existante... Il faudrait poser la question sur les forums officiels. Probablement tout de même une question d'efficacité.

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    90
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 90
    Points : 88
    Points
    88
    Par défaut
    Merci pour votre aide.

    J'ai peut etre hommis un détail

    Mon backup vient d'une version de mysql cluster différente de la mienne :
    Mysql 5.2.2.

    D'autre part j'ai parcouru les listes de bugs connus j'ai retrouver mon erreur, mais son existence est reconnue pour la version 5.1.2 et supposée résolue en 5.1.28 ... ?!

Discussions similaires

  1. CREATE TABLE .... AS SELECT
    Par blids dans le forum SQL
    Réponses: 5
    Dernier message: 13/10/2016, 14h00
  2. create table
    Par boucher_emilie dans le forum ASP
    Réponses: 3
    Dernier message: 08/07/2004, 17h08
  3. [DB2] create table... if not exists ?
    Par iubito dans le forum DB2
    Réponses: 6
    Dernier message: 23/03/2004, 18h26
  4. Create table + jointure
    Par ender999 dans le forum Débuter
    Réponses: 7
    Dernier message: 20/02/2004, 12h04
  5. Database new user & create table
    Par MFDev dans le forum InterBase
    Réponses: 3
    Dernier message: 30/09/2003, 20h47

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