关于mysql外键创建失败的问题
2012-07-12 16:34
447 查看
创建persons:
CREATE TABLE `persons` (
`id_p` int(11) NOT NULL AUTO_INCREMENT,
`lastname` varchar(10) DEFAULT NULL,
`firstname` varchar(10) DEFAULT NULL,
`address` varchar(50) DEFAULT NULL,
`city` varchar(10) DEFAULT NULL,
PRIMARY KEY (`id_p`)
);
再创建表orders:
CREATE TABLE `orders` (
`id_o` int(11) NOT NULL AUTO_INCREMENT,
`orderno` int(11) NOT NULL,
`id_p` int(11) NOT NULL,
PRIMARY KEY (`id_o`),
FOREIGN KEY (`id_p`) REFERENCES `persons` (`id_p`)
);
用show create table orders语句,查询orders的信息发现,外键并没有创建成功。查了一些资料,终于找到了原因。mysql默认创建的表是MyISAM类型的,需要将表的类型指定为innodb:
CREATE TABLE `orders` (
`id_o` int(11) NOT NULL AUTO_INCREMENT,
`orderno` int(11) NOT NULL,
`id_p` int(11) NOT NULL,
PRIMARY KEY (`id_o`),
FOREIGN KEY (`id_p`) REFERENCES `persons` (`id_p`)
) ENGINE=InnoDB;
不过这时提示以下错误:
ERROR 1005 (HY000): Can't create table 'test.orders' (errno: 150)
将persons表的类型也指定为innodb就OK了。
总结一下外键创建失败的几种情况:
1.外键和被引用外键类型不一样,比如integer和double
2.找不到要被引用的列
3.表的字符编码不一样
4.数据引擎类型不一致,比如innodb和myisam
CREATE TABLE `persons` (
`id_p` int(11) NOT NULL AUTO_INCREMENT,
`lastname` varchar(10) DEFAULT NULL,
`firstname` varchar(10) DEFAULT NULL,
`address` varchar(50) DEFAULT NULL,
`city` varchar(10) DEFAULT NULL,
PRIMARY KEY (`id_p`)
);
再创建表orders:
CREATE TABLE `orders` (
`id_o` int(11) NOT NULL AUTO_INCREMENT,
`orderno` int(11) NOT NULL,
`id_p` int(11) NOT NULL,
PRIMARY KEY (`id_o`),
FOREIGN KEY (`id_p`) REFERENCES `persons` (`id_p`)
);
用show create table orders语句,查询orders的信息发现,外键并没有创建成功。查了一些资料,终于找到了原因。mysql默认创建的表是MyISAM类型的,需要将表的类型指定为innodb:
CREATE TABLE `orders` (
`id_o` int(11) NOT NULL AUTO_INCREMENT,
`orderno` int(11) NOT NULL,
`id_p` int(11) NOT NULL,
PRIMARY KEY (`id_o`),
FOREIGN KEY (`id_p`) REFERENCES `persons` (`id_p`)
) ENGINE=InnoDB;
不过这时提示以下错误:
ERROR 1005 (HY000): Can't create table 'test.orders' (errno: 150)
将persons表的类型也指定为innodb就OK了。
总结一下外键创建失败的几种情况:
1.外键和被引用外键类型不一样,比如integer和double
2.找不到要被引用的列
3.表的字符编码不一样
4.数据引擎类型不一致,比如innodb和myisam
相关文章推荐
- 关于mysql外键创建失败的问题
- mysql外键创建失败的问题
- mysql外键创建失败的问题
- MySQL 关于建立外键失败的问题
- 关于流量升高导致TIME_WAIT增加,MySQL连接大量失败的问题
- 关于Mysql 外键使用的问题
- 【数据库新手】关于创建数据库过程失败,“master”中拒绝了CREATE DATABASE权限问题
- mysql关于包含表情昵称字段保存数据库失败问题处理
- 关于MySQL的外键创建的1215错误
- 在用 MySQL Workbench (MySQL5.6) 创建 外键 时遇到的问题
- 关于Activex控件中创建含有子控件的对话框失败问题
- mysql出现权限问题无法创建新数据库&启动mysql失败问题,问题解决
- 关于运行mysql_install_db命令导致sudo systemctl start /restart mariadb.service启动失败问题
- Mysql 外键创建失败原因
- 关于使用可视化图形工具navicat for mysql来创建外键的步骤
- 近期关于adt 创建工程失败的问题(activity创建失败) 的解决方案
- 关于mysql创建约束时遇到的问题。
- 关于mysql创建账户以及权限设置的若干方法和问题
- 关于linux下使用phpmyadmin给mysql表关联外键的问题和解决办法
- 关于流量升高导致TIME_WAIT增加,MySQL连接大量失败的问题