Erreur 1025 - Clef unique
Bonjour,
Ayant repris une base de donnée existente, je tente de la modifier, en particulier un champ type id_typeutilisateur, qui est une VARCHAR de 5 characteres.
Ma table est constituée de la manière suivante :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13
| CREATE TABLE `utilisateur` (
`id` int(11) NOT NULL auto_increment,
`nom` varchar(50) collate utf8_unicode_ci NOT NULL,
`prenom` varchar(50) collate utf8_unicode_ci NOT NULL,
`id_typeutilisateur` varchar(5) collate utf8_unicode_ci default NULL,
`identifiant` varchar(20) collate utf8_unicode_ci NOT NULL,
`motdepasse` blob NOT NULL,
`observations` text collate utf8_unicode_ci NOT NULL,
`rang` enum('user','s_user','admin') collate utf8_unicode_ci NOT NULL default 'user',
PRIMARY KEY (`id`),
UNIQUE KEY `id_typeutilisateur_2` (`id_typeutilisateur`),
KEY `rang` (`rang`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=2 ; |
La derniere ligne "rang" est celle que je veux mettre a la place de id_typeutilisateur mais il me retourne l'erreur suivante lors de la destruction de l'entrée :
Code:
1 2 3 4
|
#1025 - Error on rename of '.\***\#sql-88c_1bb' to '.\***\utilisateur' (errno: 150) |
Impossible de supprimer l'entrée.
Dans les clef il est indiqué en INDEX
J'ai donc ajouter une clef INDEX sur une autre entrée du tableau pour supprimer la précédente mais rien n'y fait, il continue de me retourner ce message, après quelque lectures sur le net, cela viendrais de la construction de la ligne et de la clef mais je n'ai pas trouver plus d'informations a ce jour.
Comment supprimer cette entrée ?
Cordialement.
Agité.
Peut-être moyen de résoudre
Bon, je ne sais pas pourquoi, mais j'avais me même problème avec ma base, une erreur 1025.
Pour le résoudre, le SQL trouvé par ci par là ne me permettant pas de passer outre l'erreur, j'ai essayé depuis des logiciels 'clic-clic'. Donc avec phpmyadmin, ça ne fonctionne pas, par contre avec MySQLWorkbench, j'y suis parvenue !
RESOLUTION AVEC MYSQLWORKBENCH :
Se connecter à sa base avec mySQLWorkbench, pour trouver la ligne qui pose problème (celle foreign key je suppose).
- Trouver sa base dans la liste (exemple : maBase1)
- Ouvrir l'arborescence, trouver la table a altérer (exemple : maTablePourrieCommeCa)
- Cliquer droit dessus, choisir alter table.
- Dans la fenêtre, trouver la colonne qui pose problème (souvent une foreign key, exemple : extMaColonneQuiPlante)
- Une fois ciblée : déchocher les cases la concernant, puis clic droit > Delete selected columns.
- Enfin, en bas à droite > Apply. C'est très important sinon ça n'enregistre pas les modifications.
Pour moi, ça n'a pas levé d'exception et a proprement supprimé la colonne, mais je n'ai pas pensé à copier le SQL, donc si quelqu'un y pense, libre à lui de le donner !