Php 添加外键关系mysql(5.5.29)时出现错误1050:
添加外键关系时,MySQL出现Php 添加外键关系mysql(5.5.29)时出现错误1050:,php,mysql,Php,Mysql,添加外键关系时,MySQL出现错误1050: 我有两个表,试图给出外键与其他表的关系,但它给出了以下错误 错误1005:无法创建表“yellowbikes.#sql-1e8_82”(错误号:121) SQL语句: ALTER TABLE `yellowbikes`.`schedule` ADD CONSTRAINT `bike_number` FOREIGN KEY (`bike_number` ) REFERENCES `yellowbikes`.`bike` (`bike_nu
错误1050
:
我有两个表,试图给出外键与其他表的关系,但它给出了以下错误
错误1005:无法创建表“yellowbikes.#sql-1e8_82”(错误号:121)
SQL语句:
ALTER TABLE `yellowbikes`.`schedule`
ADD CONSTRAINT `bike_number`
FOREIGN KEY (`bike_number` )
REFERENCES `yellowbikes`.`bike` (`bike_number` )
ON DELETE NO ACTION
ON UPDATE NO ACTION
, ADD INDEX `bike_number_idx` (`bike_number` ASC)
CREATE TABLE `schedule` (
`bikeid` int(11) NOT NULL,
`bike_number` varchar(24) NOT NULL,
PRIMARY KEY (`bikeid`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8
错误:运行故障回复脚本时出错。详情如下
错误1050:表“时间表”已存在
SQL语句:
ALTER TABLE `yellowbikes`.`schedule`
ADD CONSTRAINT `bike_number`
FOREIGN KEY (`bike_number` )
REFERENCES `yellowbikes`.`bike` (`bike_number` )
ON DELETE NO ACTION
ON UPDATE NO ACTION
, ADD INDEX `bike_number_idx` (`bike_number` ASC)
CREATE TABLE `schedule` (
`bikeid` int(11) NOT NULL,
`bike_number` varchar(24) NOT NULL,
PRIMARY KEY (`bikeid`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8
检查以确保它们都是同一类型。
Schedule
具有类型utf8
。检查黄色自行车的类型是否为默认类型?!?!如果是,请将其更改为utf8
编辑:
还可以检查MySql数据库是否为MyISAM。如果是这样,请将其切换到InnoDB,因为如果您需要数据库强制执行外键约束,或者需要数据库作为单个工作单元处理DML操作集所做的更改,那么您将选择InnoDB而不是MyISAM,由于MyISAM引擎中没有这些功能。您是否尝试过不使用“yellowbikes”的SQL语句?您是否100%确定没有名称为schedule的表?在第二条语句之前,如果存在计划,请尝试删除表。如果确实存在,则听起来像是一个坏表。嗨,Alex,不,没有单独的表作为“计划”,也已尝试使用不同的名称,仍然存在相同的问题。您是否在Windows上运行MySQL服务器?嗨,Vin,是的,两者都属于相同类型,我已经创建了更多的表和关系,但是现在当我创建一个新的表和关系时,它会抛出这个错误。如果您的MySQL DB引擎是MyISAM,您将无法在创建表之后添加外键。如果是这样,您可以将其更改为InnoDB..(ans编辑)Hi-Vinayak,两个表的引擎都是InnoDB本身,具有排序规则UTF8默认排序规则检查此帖子“[2011年2月16日12:41]Desmond Coertzen”,在这个链接中Hi-Vinayak,可以,但我认为它的行为方式不同:(顺便说一句,谢谢搜索它。。