2010-04-29 51 views
3

我有一个数据库已经设置。我正在尝试在我的用户名列上将排序规则更改为区分大小写,以便将登录参数限制为他们注册的内容。更改列整理

不过我老觉得:#1025 - Error on rename of './yebutno_ybn/#sql-76dc_8581dc' to './yebutno_ybn/user' (errno: 150)

存在是由于相关表的外键约束....

什么想法?这将为我节省很多麻烦与PHP的一面!

感谢, 斯特凡

+0

只是在你没有想到的情况下要考虑的事情的快速警告。如果您将用户名区分大小写,您可以通过创建一个名为stefan的用户来创建欺骗Stefan的可能性。 – 2012-07-05 11:33:22

回答

1

除了禁用FOREIGN_KEY_CHECKS,您可以放弃外键,做你的东西,重新创建它。如果重建索引可能需要很长时间,这可能不是一个好主意。

请注意,更改排序规则可能会孤行一些行。 STEfan将不再与斯蒂芬有关......所以你可能想要调查一下,看看你是否会有任何事件发生,并决定你将要做些什么,然后再继续。

+0

它还没有发布给公众,所以我要提前解决这个问题。我要做到这一点,所以他们只能使用确切的用户名登录,所以当数据存储在表格会话中时,它们是一样的! 如何暂时放弃外键? – 2010-04-29 02:30:43

+0

ALTER TABLE tbl_name DROP FOREIGN KEY fk_symbol; – goat 2010-04-29 02:57:23

1

我想你可以通过使用类似关闭外键约束:

SET FOREIGN_KEY_CHECKS = 0; 

您完成调整后,那么你可以让他们回来。不过,我会建议制作一份数据库的副本,并首先在副本上进行尝试。