mysql – SHOW CREATE TABLE输出中缺少外键约束
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了mysql – SHOW CREATE TABLE输出中缺少外键约束,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2486字,纯文字阅读大概需要4分钟。
内容图文
![mysql – SHOW CREATE TABLE输出中缺少外键约束](/upload/InfoBanner/zyjiaocheng/902/e7534301a79d4a9f9b9a5394839c355a.jpg)
我发现SHOW CREATE TABLE没有像我期望的那样显示外键约束.
为了演示,这是MySQL manual的一个例子:
CREATE TABLE parent (
id INT NOT NULL,
PRIMARY KEY (id)
) ENGINE=INNODB;
CREATE TABLE child (
id INT, parent_id INT,
INDEX par_ind (parent_id),
FOREIGN KEY (parent_id) REFERENCES parent(id) ON DELETE CASCADE
) ENGINE=INNODB;
mysql> SHOW CREATE TABLE child\G
*************************** 1. row ***************************
Table: child
Create Table: CREATE TABLE "child" (
"id" int(11) default NULL,
"parent_id" int(11) default NULL,
KEY "par_ind" ("parent_id")
) ENGINE=InnoDB DEFAULT CHARSET=utf8
1 row in set (0.00 sec)
在那个输出中,我希望看到类似的东西:
CONSTRAINT `child_ibfk_1` FOREIGN KEY (`parent_id`)
REFERENCES `parent` (`id`) ON DELETE CASCADE
在那创建表输出,但显然它不存在.
然而,约束确实存在:
mysql> SELECT * FROM information_schema.KEY_COLUMN_USAGE WHERE table_schema=database()\G
*************************** 1. row ***************************
CONSTRAINT_CATALOG: NULL
CONSTRAINT_SCHEMA: test_fk
CONSTRAINT_NAME: child_ibfk_1
TABLE_CATALOG: NULL
TABLE_SCHEMA: test_fk
TABLE_NAME: child
COLUMN_NAME: parent_id
ORDINAL_POSITION: 1
POSITION_IN_UNIQUE_CONSTRAINT: 1
REFERENCED_TABLE_SCHEMA: test_fk
REFERENCED_TABLE_NAME: parent
REFERENCED_COLUMN_NAME: id
*************************** 2. row ***************************
CONSTRAINT_CATALOG: NULL
CONSTRAINT_SCHEMA: test_fk
CONSTRAINT_NAME: PRIMARY
TABLE_CATALOG: NULL
TABLE_SCHEMA: test_fk
TABLE_NAME: parent
COLUMN_NAME: id
ORDINAL_POSITION: 1
POSITION_IN_UNIQUE_CONSTRAINT: NULL
REFERENCED_TABLE_SCHEMA: NULL
REFERENCED_TABLE_NAME: NULL
REFERENCED_COLUMN_NAME: NULL
2 rows in set (0.01 sec)
mysql> SELECT * FROM information_schema.TABLE_CONSTRAINTS WHERE table_schema=database()\G
*************************** 1. row ***************************
CONSTRAINT_CATALOG: NULL
CONSTRAINT_SCHEMA: test_fk
CONSTRAINT_NAME: child_ibfk_1
TABLE_SCHEMA: test_fk
TABLE_NAME: child
CONSTRAINT_TYPE: FOREIGN KEY
*************************** 2. row ***************************
CONSTRAINT_CATALOG: NULL
CONSTRAINT_SCHEMA: test_fk
CONSTRAINT_NAME: PRIMARY
TABLE_SCHEMA: test_fk
TABLE_NAME: parent
CONSTRAINT_TYPE: PRIMARY KEY
2 rows in set (0.01 sec)
我用自己设计的例子得到了相同的结果.
知道发生了什么事吗?
更新2011-01-08:我认为这与sql_mode变量有关.但目前我不知道哪种模式设置排除了SHOW CREATE TABLE输出的约束.
解决方法:
mysql sql_mode变量的设置肯定是我报告的行为的原因.我删除了从my.cnf设置它的行,mysql执行了预期的行为.但是我忘记了那个设置是什么,并且从那时起就没有弄明白.如果有人能够确定哪一个,请继续前进.
内容总结
以上是互联网集市为您收集整理的mysql – SHOW CREATE TABLE输出中缺少外键约束全部内容,希望文章能够帮你解决mysql – SHOW CREATE TABLE输出中缺少外键约束所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。