mysql hy000 1005,mysql error :ERROR 1005 (HY000): Can't create table xxx

在建外键时出现一条错误:

ALTER">mysql@127.0.0.1.site>ALTER TABLE `service` ADD CONSTRAINT `host_id_refs_id_507efddd` FOREIGN KEY (`host_id`) REFERENCES `host` (`id`);

ERROR 1005 (HY000): Can't create table 'site.#sql-c4e_c' (errno: 150)

[root@taohx vm129 site]# perror 150

MySQL error code 150: Foreign key constraint is incorrectly formed

[root@taohx vm129 site]# perror 1005

Illegal error code: 1005

CREATE TABLE `host` (

`id` int(11) NOT NULL AUTO_INCREMENT,

`cmdb_sn` varchar(32) NOT NULL,

`internal_ip` varchar(16) NOT NULL,

`external_ip` varchar(16) NOT NULL,

`idc_name` varchar(16) NOT NULL,

`status` enum('online','unused','repair') DEFAULT 'unused',

`description` varchar(32) NOT NULL,

PRIMARY KEY (`id`)

) ENGINE=InnoDB AUTO_INCREMENT=12 DEFAULT CHARSET=utf8

CREATE TABLE `service` (

`id` int(10) unsigned NOT NULL AUTO_INCREMENT,

`host_id` int(11) unsigned NOT NULL,

`port` int(10) unsigned NOT NULL,

`role` enum('master','mb','slave','relay') DEFAULT 'slave',

`status` enum('online','offline','unused') DEFAULT 'unused',

`description` varchar(255) DEFAULT '' COMMENT '备注',

PRIMARY KEY (`id`),

UNIQUE KEY `host_id` (`host_id`,`port`),

KEY `idx_port` (`port`)

) ENGINE=InnoDB AUTO_INCREMENT=11 DEFAULT CHARSET=latin1

经查阅资料:

原因是关联字段类型不匹配,要完全匹配才行。

alter">mysql@127.0.0.1.site>alter table host change id id int(11) unsigned not null auto_increment;

Query OK, 11 rows affected (0.06 sec)

Records: 11  Duplicates: 0  Warnings: 0

ALTER">mysql@127.0.0.1.site>ALTER TABLE `service` ADD CONSTRAINT `host_id_refs_id_507efddd` FOREIGN KEY (`host_id`) REFERENCES `host` (`id`);

Query OK, 10 rows affected (0.05 sec)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值