当前位置: 首页 > 面试题库 >

重命名MySQL中的外键列

左丘善
2023-03-14
问题内容

我们正在尝试重命名MySQL(5.1.31,InnoDB)中的一列,该列是另一个表的外键。

最初,我们尝试使用Django-South,但遇到了一个已知问题:

http://south.aeracode.org/ticket/243

OperationalError:(1025,“将’./xxx/#sql-
bf_4d’重命名为’./xxx/cave_event’时出错(错误号:150)”)

将’./xxx/#sql-bf_4b’重命名为’./xxx/cave_event’时出错(错误号:150)

错误150肯定与外键约束有关。见例如

mysql错误1025(HY000):“ ./
foo”重命名错误(错误编号:150)是什么意思?

http://www.xaprb.com/blog/2006/08/22/mysqls-
error-1025-explained/

因此,现在我们尝试在原始SQL中进行重命名。看来我们将必须首先删除外键,然后进行重命名,然后再次添加外键。听起来对吗?有没有更好的方法,因为这似乎很令人困惑和麻烦?

任何帮助将非常感激!


问题答案:

AFAIK,删除约束,然后重命名,然后再添加约束是唯一的方法。先备份!



 类似资料:
  • 问题内容: 我正在尝试使用以下SQL表达式重命名MySQL社区服务器5.5.27中的列: 我也试过 但它说: 错误:检查与您的MySQL服务器版本相对应的手册 问题答案: 使用以下查询: 该功能在Oracle数据库中使用。 注意用于MySQL的反引号,而双引号用于Oracle的语法。 另请注意,MySQL 8.0可能不接受反引号。在这种情况下,不带反引号的情况下执行查询,它可能会起作用。 @ la

  • 它抛出了一个错误。 开始新的alter操作前缺少逗号。(靠近位置50的“to”)SQL查询:复制 更改表客户将列dob重命名为生日日期 MySQL说:文档 #1064-您的SQL语法中有一个错误;请查看与您的MySQL服务器版本相对应的手册,以便在第3行“Column dob to birthdate Date”附近使用正确的语法

  • 问题内容: 如何重命名表中的列?这些列是: 我想重命名为 我尝试使用PHPMyAdmin面板,但出现此错误: 问题答案: Lone Ranger非常接近…实际上,您还需要指定重命名列的数据类型。例如: 请记住: 将INT替换为您的任何列数据类型(必填) 波浪号/反引号(`)是可选的

  • 我在mysql工作台上设计了一个数据库。当我转到forward engineer时,我得到了(错误号:121),因为我在多个表中使用了相同的外键,我意识到这是不允许的。我有相当多的连接表,主要是n:m关系。对于这些连接表中的大多数,我都使用复合主键(由2个外键组成)。我的问题是我必须重命名这些主键和外键是唯一的吗?谢谢你的帮助。 (在下面的代码中,我还没有重命名外键)

  • 问题内容: 我有一个表,该表的主键包含两列(product_id,attribute_id)。我有另一个表需要引用该表。如何在另一个表中创建外键,以使用两个主键将其链接到表中的行? 问题答案: 这样的事情应该做到: MySQL要求对外键进行索引,因此引用列上的索引 使用约束语法使您能够命名约束,从而在以后需要时更容易更改和删除。 InnoDB强制使用外键,而MyISAM不强制。(语法已解析但被忽略