更改列排序规则

Posted

技术标签:

【中文标题】更改列排序规则【英文标题】:Changing a column collation 【发布时间】:2011-02-13 14:48:27 【问题描述】:

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

但是我一直收到这个:#1025 - Error on rename of './yebutno_ybn/#sql-76dc_8581dc' to './yebutno_ybn/user' (errno: 150)

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

有什么想法吗?这将为我省去很多 php 方面的麻烦!

谢谢, 斯蒂芬

【问题讨论】:

只是一个快速警告,以防万一您没有想到它。如果您使用户名区分大小写,则您可能会通过创建一个名为 stefan 的用户来欺骗 Stefan。 【参考方案1】:

除了禁用 FOREIGN_KEY_CHECKS 之外,您还可以删除外键,然后重新创建它。如果重建索引可能需要很长时间,这可能不是一个好主意。

请注意,更改排序规则可能会孤立某些行。 STEfan 将不再与 stefan 相关...因此,您可能需要对此进行调查,看看是否会发生任何事件,并在继续之前决定如何处理。

【讨论】:

它还没有向公众发布,所以我提前停止了这个问题。我要做到这一点,所以他们只能使用确切的用户名登录,所以当数据存储在会话中时,它是一样的!如何暂时删除外键? ALTER TABLE tbl_name DROP FOREIGN KEY fk_symbol;【参考方案2】:

我认为您可以使用以下方式关闭外键约束:

SET FOREIGN_KEY_CHECKS = 0;

完成调整后,您可以重新启用它们。不过,我建议制作一个数据库副本,然后先在副本上尝试。

【讨论】:

以上是关于更改列排序规则的主要内容,如果未能解决你的问题,请参考以下文章

更改列排序规则 - 安全吗?

如何使用 Doctrine 更改列字符集和排序规则?

如何在不转换列的情况下更改 MySQL 中的表(默认)排序规则[重复]

使用 laravel 更新列排序规则

SQL Server 2005 排序规则问题

powerbi 怎么指定排序规则