gpt4 book ai didi

MySQL错误代码: 1215.无法添加外键约束(两列的数据类型匹配)

转载 作者:行者123 更新时间:2023-11-29 18:50:51 24 4
gpt4 key购买 nike

我正在尝试对现有表创建外键约束,仅接收 Error Code: 1215. Cannot add foreign key constraint 。下面我包括SHOW CREATE TABLE observation_log_status; , SHOW CREATE TABLE observation_log;输出和失败的外键约束语句。我已经检查(根据建议 here )这两列的数据类型是否相同(它们是),以及这两列是否已签名或未签名(根据建议 here )(它们都不是),但错误仍然相同。我使用的是 MySQL 5.7.17。

谢谢,艾娜。

编辑:这不是重复的,但我现在有义务解释它有何不同。在重复的问题中,OP 的两列没有相同的数据类型,正如我的 SHOW CREATE TABLE 语句输出所示。

****************************************解决方案**************** **************************

另一个编辑:正如 P.Salmon 所说,问题确实出在引擎上。我通过运行 ALTER TABLE observation_log ENGINE = InnoDB; 解决了这个问题。然后ALTER TABLE observation_log_status ADD CONSTRAINT observation_log_fk FOREIGN KEY (aat_id) REFERENCES observation_log(aat_id);声明效果很好。

****************************************解决方案**************** **************************

SHOW CREATE TABLE observation_log;
observation_log, CREATE TABLE `observation_log` (
`aat_id` decimal(14,0) NOT NULL DEFAULT '0',
`utdate` date DEFAULT NULL,
`session` char(1) NOT NULL DEFAULT '',
...,
`aaoprgid` char(11) DEFAULT NULL,
PRIMARY KEY (`aat_id`),
KEY `obs_object` (`object`),
KEY `obs_utdate` (`utdate`),
KEY `obs_ra_dec` (`raj2000_int`,`decj2000_int`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1

SHOW CREATE TABLE observation_log_status;
observation_log_status, CREATE TABLE `observation_log_status` (
`observation_log_status_id` int(11) NOT NULL AUTO_INCREMENT,
`aat_id` decimal(14,0) NOT NULL DEFAULT '0',
`data_needs_processing_status` tinyint(1) DEFAULT '1',
`data_file_transfer_status` tinyint(1) DEFAULT '0',
`megatable_update_status` tinyint(1) DEFAULT '0',
`data_file_search_attempt_count` int(11) DEFAULT '0',
`data_file_trasnfer_attempt_count` int(11) DEFAULT '0',
`megatable_update_attempt_count` int(11) DEFAULT '0',
`data_file_transfer_timer` int(11) DEFAULT '0',
`row_insert_time` datetime(6) DEFAULT CURRENT_TIMESTAMP(6),
PRIMARY KEY (`observation_log_status_id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1

生成错误的语句:

ALTER TABLE observation_log_status ADD CONSTRAINT observation_log_fk FOREIGN KEY (aat_id) REFERENCES observation_log(aat_id);

最佳答案

aat_id`decimal(14,0) NOT NULL DEFAULT '0'

尝试删除默认值。外键不能有默认值。只有主键中存在的值才能被外键接受

关于MySQL错误代码: 1215.无法添加外键约束(两列的数据类型匹配),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44361548/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com