2010-04-29 9 views
3

J'ai déjà mis en place une base de données. J'essaye de changer la collation à la casse sensible sur ma colonne de nom d'utilisateur ainsi elle restreint des paramètres de connexion à ce qu'ils ont signés avec.Modification d'une collation de colonne

Cependant, je continue à obtenir ceci: #1025 - Error on rename of './yebutno_ybn/#sql-76dc_8581dc' to './yebutno_ybn/user' (errno: 150)

il y a des contraintes clés étrangères en raison de tables connexes ....

des idées? Cela me sauvera beaucoup de tracas avec le côté php des choses!

Merci, Stefan

+0

Juste un avertissement rapide de quelque chose à considérer dans le cas où vous ne l'avez pas pensé. Si vous faites la distinction entre majuscules et minuscules, vous créez la possibilité pour quelqu'un d'usurper Stefan en créant un utilisateur appelé stefan. –

Répondre

1

En plus invalidantes FOREIGN_KEY_CHECKS, vous pouvez simplement laisser tomber la clé étrangère, vous farcir, recréer. Probablement pas une bonne idée si la reconstruction de l'index peut prendre beaucoup de temps.

Soyez conscient, la collation pourrait changer orphelin quelques lignes. Štefan ne sera plus liée à stefan ... de sorte que vous voudrez peut-être enquêter sur cela pour voir si vous avez des événements, et de décider ce que vous allez faire à ce sujet, avant de poursuivre.

+0

Il n'est toujours pas publié au public, donc j'arrête le problème avant la main. Je vais faire en sorte qu'ils ne peuvent se connecter en utilisant le nom d'utilisateur exact, donc c'est la même chose à travers le tableau lorsque les données sont stockées sous forme de sessions! Comment puis-je déposer temporairement la clé étrangère? –

+0

ALTER TABLE tbl_name DROP FOREIGN KEY fk_symbol; – goat

1

Je pense que vous pouvez désactiver les clés étrangères en utilisant quelque chose comme:

SET FOREIGN_KEY_CHECKS = 0; 

Après votre réglage est terminé, vous pouvez les activer en arrière. Cependant, je recommande de faire une copie de la base de données et d'essayer cela sur la copie d'abord.