Mysql 错误1215:在删除集NULL上使用时无法添加外键约束
我试图在MySQL中创建以下表。第一个:Mysql 错误1215:在删除集NULL上使用时无法添加外键约束,mysql,Mysql,我试图在MySQL中创建以下表。第一个: CREATE TABLE IF NOT EXISTS address( address_id INT NOT NULL AUTO_INCREMENT, address_region VARCHAR(10) NOT NULL, address_country VARCHAR(20) NOT NULL, address_city VARCHAR(30) NOT NULL, PRIMARY KEY(address_id))ENGINE =
CREATE TABLE IF NOT EXISTS address(
address_id INT NOT NULL AUTO_INCREMENT,
address_region VARCHAR(10) NOT NULL,
address_country VARCHAR(20) NOT NULL,
address_city VARCHAR(30) NOT NULL,
PRIMARY KEY(address_id))ENGINE = InnoDB;
我成功地创建了它,但是当我尝试创建另一个表时,如下所示
CREATE TABLE IF NOT EXISTS spot(
spot_id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
spot_address INT(11) NOT NULL,
spot_name VARCHAR(50) NOT NULL,
spot_desc VARCHAR(500) DEFAULT ' ',
spot_speadd VARCHAR(100) NOT NULL,
spot_viewtime INT DEFAULT 0,
FOREIGN KEY(spot_address)
REFERENCES address(address_id)
ON DELETE SET NULL
ON UPDATE SET NULL);
我得到一个错误:
错误1215(HY000):无法添加外键约束
为什么此create table语句失败?您在
spot
表中的spot\U address
上有NOT NULL
约束,然后在父表address中删除或更新时尝试将其设置为NULL
您可以尝试以下操作:
CREATE TABLE IF NOT EXISTS address
(
address_id INT NOT NULL AUTO_INCREMENT,
address_region VARCHAR(10) NOT NULL,
address_country VARCHAR(20) NOT NULL,
address_city VARCHAR(30) NOT NULL,
PRIMARY KEY(address_id)
)ENGINE = INNODB;
CREATE TABLE IF NOT EXISTS `spot`
(
`spot_id` INT(11) NOT NULL AUTO_INCREMENT,
`spot_address` INT(11) NOT NULL,
`spot_name` VARCHAR(50) NOT NULL,
`spot_desc` VARCHAR(500) DEFAULT ' ',
`spot_speadd` VARCHAR(100) NOT NULL,
`spot_viewtime` INT(11) DEFAULT '0',
PRIMARY KEY (`spot_id`),
KEY `spot_address` (`spot_address`),
CONSTRAINT `spot_ibfk_1` FOREIGN KEY (`spot_address`) REFERENCES `address` (`address_id`)
) ENGINE=INNODB DEFAULT CHARSET=utf8
我认为你是对的,它是有效的!!!要获取详细错误:请运行显示引擎INNODB状态
并查看“最新外键错误”部分,您能否向我们解释您的答案?为我读书也会很有趣。谢谢。引用{INDEX | KEY}刚刚添加了KEYspot_address
(spot_address
)