【问题标题】: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。

标签: php mysql sql collation mysql-error-1025


【解决方案1】:

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

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

【讨论】:

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

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

SET FOREIGN_KEY_CHECKS = 0;

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

【讨论】:

    猜你喜欢
    • 2015-04-03
    • 2011-11-12
    • 1970-01-01
    • 2021-04-12
    • 2011-03-28
    • 2016-11-17
    • 1970-01-01
    • 2011-08-28
    • 2017-06-05
    相关资源
    最近更新 更多