|
Publicité ' | ||||||||||||||||||||||||
|
|
#1 | |||
|
Nouveau Membre du Club
![]() Inscription : mai 2004 Messages : 181 ![]() |
Bonjour à tous,
Je me connecte en root et choisis ma table postfix pour modifier la clé mais Citation:
Citation:
Citation:
|
|||
|
|
00
|
|
|
#2 |
![]() ![]() ![]() Cédric DuprezInscription : avril 2002 Messages : 3 823 ![]() |
Bonjour,
La colonne référente et la colonne référencée ont-elles le même type ? Peut-on voir la structure des 2 tables ?
__________________
Rédacteur / Modérateur SGBD Mes tutoriels et la FAQ MySQL ---------------------------------------------------- Pensez aux balises code et au tag Je ne réponds pas aux questions techniques par message privé, les forums sont là pour ça
|
|
|
00
|
|
|
#3 | ||
|
Nouveau Membre du Club
![]() Inscription : mai 2004 Messages : 181 ![]() |
la table : vacation_notification
Citation:
Citation:
|
||
|
|
00
|
|
|
#4 |
|
Membre éclairé
![]() Inscription : avril 2009 Messages : 331 ![]() |
Ta syntaxe est correcte.
Peux-tu ré-exécuter la requête et lancer la commande ci-dessous immédiatement après : Rachid |
|
|
00
|
|
|
#5 | |
|
Expert Confirmé
![]() ![]() Avcxjo MoKoRetraité Inscription : novembre 2005 Messages : 2 530 ![]() |
Saluton,
Je vais peut-être dire une ânerie mais j'observe que la clé primaire de la table vacation_notification est composite on_vacation+notified Citation:
__________________
Kie lumo eksistas ankaŭ ombro troviĝas. L.L. Zamenhof articles : Comment émuler un tableau croisé [quasi] dynamique et : Une énigme mathématique résolue avec MySQL recommande l'utilisation de PDO (PHP5 Data Objects) |
|
|
00
|
|
|
#6 | ||
|
Nouveau Membre du Club
![]() Inscription : mai 2004 Messages : 181 ![]() |
bonjour
voila la réponse à Code :
|
||
|
|
00
|
|
|
#7 |
|
Membre éclairé
![]() Inscription : avril 2009 Messages : 331 ![]() |
Aussi les résultats de ces deux commandes :
Code :
SHOW CREATE TABLE vacation_notification\G Rachid |
|
|
00
|
|
|
#8 | ||||
|
Nouveau Membre du Club
![]() Inscription : mai 2004 Messages : 181 ![]() |
SHOW CREATE TABLE vacation_notification\G
Code :
Code :
|
||||
|
|
00
|
|
|
#9 |
|
Membre éclairé
![]() Inscription : avril 2009 Messages : 331 ![]() |
Les deux tables ont un CHARSET différent, il faudra mettre le même pour les deux tables, ou au moins pour les colonnes concernées.
Autre remarque, le second index sur 'email' est inutile, vu que MySQL en crée un automatiquement (primary key) Rachid |
|
|
00
|
|
|
#10 |
|
Membre Expert
![]() Eric DureuilDéveloppeur informatique Inscription : avril 2011 Messages : 853 ![]() |
salut,
petite remarque garde ton index sur email mais crée un colonne id int(4) not null auto_increment et modifiie ton primary key pour que ce soit elle le primary key les indexes texte sont le mal absolu en terme de place et de performance si tu t'en sers comme clé primaire car tout autre index sur ta table sera construit sur ses valeurs à lui... ainsi que si tu t'en sers comme clé étrangère ailleurs... idem pour l'autre table... un index texte ne doit être fait que si tu en as besoin sur une colonne... si tu as besoin de contrôler juste de l'unicité, y a les triggers pour ça en innodb... faire une clé primaire sur 2 colonnes de type texte veut dire que la taille de ton index va au moins tripler ou quadrupler la taille de ta table en terme de stockage et de bufferisation des indexes liés en mémoire pour leur manipulation... c'est pour ça qu'on prend toujours un index numérique (car très compact) comme clé primaire... pour mémoire int(4) ça permet 4 milliards environ de combinaisons... voilou...
__________________
Eric Dureuil, développeur web, c/c++, java indépendant soyons ![]() pensez à mettre et
|
|
|
00
|
|
|
#11 |
|
Nouveau Membre du Club
![]() Inscription : mai 2004 Messages : 181 ![]() |
merci pour vos réponses
pour modifier le charset, est ce que un upgrade suffit ??? pour les index , si je rajoute une colonne ID cela ne va pas perturber les INSERT dans la table ?? le programme qui utilise tout ça est postfixadmin et les tables vacation* sont aussi utilisées par vacation.pl pour info, cela fait une bonne huitaine que j’essaie de faire tourner cette saloperie de programme vacation avec mes users virtuels |
|
|
00
|
|
|
#12 | |
|
Membre éclairé
![]() Inscription : avril 2009 Messages : 331 ![]() |
Citation:
Peux-tu stp m'expliquer l'intérêt d'avoir deux index différents sur cette même colonne "email"? Rachid |
|
|
|
00
|
|
|
#13 |
![]() ![]() ![]() Cédric DuprezInscription : avril 2002 Messages : 3 823 ![]() |
Je pense que ce qu'il veut dire, c'est déplacer la clé primaire sur une nouvelle colonne, mais conserver l'index sur la colonne email. Ce qui fait que cette dernière n'a plus qu'un seul index, vu qu'elle n'est plus clé primaire.
Ou alors, moi non plus, je ne pige pas l'intérêt
__________________
Rédacteur / Modérateur SGBD Mes tutoriels et la FAQ MySQL ---------------------------------------------------- Pensez aux balises code et au tag Je ne réponds pas aux questions techniques par message privé, les forums sont là pour ça
|
|
|
00
|
|
|
#14 |
|
Membre Expert
![]() Eric DureuilDéveloppeur informatique Inscription : avril 2011 Messages : 853 ![]() |
techniquement on ,'a pas tout le schéma...
ta solution est la meilleure si les tables ne sont référencées par aucune autre ou si il y a impossibilité de modifier les tables à cause des scripts qui les utilisent après on n'a pas tous les tenants et aboutissants... je ne connais pas l'application, c'est sensé être un truc pro pour gérer les réservations ? ça a l'air très brouillon comme truc... enfin même pas peur
__________________
Eric Dureuil, développeur web, c/c++, java indépendant soyons ![]() pensez à mettre et
|
|
|
00
|
|
|
#15 |
|
Nouveau Membre du Club
![]() Inscription : mai 2004 Messages : 181 ![]() |
non ericd69, ce n'est pas une appli de reservation
vacation est un répondeur automatique qui prévient l’émetteur que son correspondant est absent quand un mail arrive, vacation qui est un script perl retourne un mail à l’émetteur et range le mail arrivé dans sa boite mail ça marche avec postfix,postfixamin et éventuellement avec roundcube le but de cette manip est d’empêcher un conflit entre lors de l'enregistrement dans une table .... je recherche l'article qui traite de ça |
|
|
00
|
|
|
#16 |
|
Membre Expert
![]() Eric DureuilDéveloppeur informatique Inscription : avril 2011 Messages : 853 ![]() |
je vois...
perso je pense aussi que ce qui t'empêche de faire ce que tu veux c'est que tu tentes de référencer une partie de ta clé primaire comme clé étrangère avec cascade delete aussi... soit un champ d'une table est dans la primary key soit dans une foreign key soit dans rien...
__________________
Eric Dureuil, développeur web, c/c++, java indépendant soyons ![]() pensez à mettre et
|
|
|
00
|
|
|
#17 | |
|
Expert Confirmé
![]() ![]() Avcxjo MoKoRetraité Inscription : novembre 2005 Messages : 2 530 ![]() |
Citation:
__________________
Kie lumo eksistas ankaŭ ombro troviĝas. L.L. Zamenhof articles : Comment émuler un tableau croisé [quasi] dynamique et : Une énigme mathématique résolue avec MySQL recommande l'utilisation de PDO (PHP5 Data Objects) |
|
|
00
|
|
|
#18 |
|
Membre éclairé
![]() Inscription : avril 2009 Messages : 331 ![]() |
C'est un problème assez connu, les colonnes impliquées dans une relation de clé étrangère doivent avoir le même CHARSET.
gilles974, Peux-tu tester et nous confirmer que cela fonctionne? Rachid |
|
|
00
|
|
|
#19 | |
|
Nouveau Membre du Club
![]() Inscription : mai 2004 Messages : 181 ![]() |
juste une remarque
pour les index , si je rajoute une colonne ID cela ne va pas perturber les INSERT dans la table ?? pour modifier le charset, est ce que un upgrade suffit ??? ou faut il une requête plus sophistiquée ? je fais la solution d'ericd69 et vous préviens dès lundi Citation:
|
|
|
|
00
|
|
|
#20 |
|
Membre Expert
![]() Eric DureuilDéveloppeur informatique Inscription : avril 2011 Messages : 853 ![]() |
normalement non
mais comme on est 3 à te le dire, ton problème est sur l'autre table... pour ton alter en gros, avant de modifier tes tables... si c'est une application toute faite (même mal mais sensée marcher), pourquoi tu veux modifier tes tables et notamment faire cet alter?
__________________
Eric Dureuil, développeur web, c/c++, java indépendant soyons ![]() pensez à mettre et
|
|
|
00
|
Copyright © 2000-2012 - www.developpez.com