相关疑难解决方法(0)

MySQL术语"约束"与"外键"的区别?

我在这里查看MySQL文档并试图理清FOREIGN KEY和CONSTRAINT之间的区别.我认为FK 一种约束,但是文档似乎在谈论它们,就像它们是分开的东西一样.

创建FK的语法是(部分)......

[CONSTRAINT [symbol]] FOREIGN KEY
    [index_name] (index_col_name, ...)
    REFERENCES tbl_name (index_col_name,...)
Run Code Online (Sandbox Code Playgroud)

所以"CONSTRAINT"子句是可选的.你为什么要包括它或不包括它?如果你把它留下来,MySQL会创建一个外键但不是约束吗?或者它更像是一个"CONSTRAINT"只不过是你FK的名字,所以如果你没有指定它,你会得到一个匿名的FK?

任何澄清将不胜感激.

谢谢,

阮经天

mysql ddl constraints foreign-keys

45
推荐指数
2
解决办法
3万
查看次数

重命名MySQL中的外键列

我们正在尝试重命名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'时出错(errorno:150)是什么意思?

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

所以,现在我们正在尝试在原始SQL中重命名.看起来我们必须首先删除外键,然后重命名,然后再次添加外键.听起来不错吗?有没有更好的方法,因为这看起来很混乱和麻烦?

任何帮助将非常感激!

mysql sql foreign-keys mysql-error-1025

45
推荐指数
2
解决办法
4万
查看次数

标签 统计

foreign-keys ×2

mysql ×2

constraints ×1

ddl ×1

mysql-error-1025 ×1

sql ×1