mysql - 无法在 mysql 中创建表错误(150)

标签 mysql sql

我想创建 3 个表,分别称为 currenttasks、originaltasks 和 previoustasks。我制作一张表并复制到另外两张表。但其中一张表无法创建,另外两张表创建成功。

这三个表是:

DROP TABLE IF EXISTS `CurrentTasks`;
/*!40101 SET @saved_cs_client     = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `CurrentTasks` (
  `taskID` mediumint(9) NOT NULL AUTO_INCREMENT,
  `taskName` varchar(255) NOT NULL,
  `isActive` boolean DEFAULT TRUE,   
  `startDate` datetime NOT NULL,
  `endDate` datetime NOT NULL,
  `completeDate` datetime DEFAULT NULL,
  `complexityID` smallint(6) NOT NULL,
  `managerID` mediumint(9) NOT NULL,
  `projectID` mediumint(9) NOT NULL,
  `requirementName` varchar(255) NOT NULL,
  `xPos` smallint(6) DEFAULT NULL,
  `yPos` smallint(6) DEFAULT NULL,
  `description` text NOT NULL,
  `stageName` enum('Definition','Design','Development','Testing','Evaluation') NOT NULL DEFAULT 'Definition',
  PRIMARY KEY (`taskID`)

) ENGINE=InnoDB DEFAULT CHARSET=latin1;
/*!40101 SET character_set_client = @saved_cs_client */;

--
-- Dumping data for table `CurrentTasks`
--

LOCK TABLES `PreviousTasks` WRITE;
/*!40000 ALTER TABLE `PreviousTasks` DISABLE KEYS */;
/*!40000 ALTER TABLE `PreviousTasks` ENABLE KEYS */;
UNLOCK TABLES;

--
-- Table structure for table `PreviousTasks`
--

DROP TABLE IF EXISTS `PreviousTasks`;
/*!40101 SET @saved_cs_client     = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `PreviousTasks` (
  `taskID` mediumint(9) NOT NULL AUTO_INCREMENT,
  `taskName` varchar(255) NOT NULL,
  `isActive` boolean DEFAULT TRUE,   
  `startDate` datetime NOT NULL,
  `endDate` datetime NOT NULL,
  `completeDate` datetime DEFAULT NULL,
  `complexityID` smallint(6) NOT NULL,
  `managerID` mediumint(9) NOT NULL,
  `projectID` mediumint(9) NOT NULL,
  `requirementName` varchar(255) NOT NULL,
  `xPos` smallint(6) DEFAULT NULL,
  `yPos` smallint(6) DEFAULT NULL,
  `description` text NOT NULL,
  `stageName` enum('Definition','Design','Development','Testing','Evaluation') NOT NULL DEFAULT 'Definition',
  PRIMARY KEY (`taskID`),
  UNIQUE KEY `uniquePreviousTasks` (`requirementName`,`projectID`,`taskName`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
/*!40101 SET character_set_client = @saved_cs_client */;

--
-- Dumping data for table `PreviousTasks`
--

LOCK TABLES `PreviousTasks` WRITE;
/*!40000 ALTER TABLE `PreviousTasks` DISABLE KEYS */;
/*!40000 ALTER TABLE `PreviousTasks` ENABLE KEYS */;
UNLOCK TABLES;

--
-- Table structure for table `OriginalTasks`
--

DROP TABLE IF EXISTS `OriginalTasks`;
/*!40101 SET @saved_cs_client     = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `OriginalTasks` (
  `taskID` mediumint(9) NOT NULL AUTO_INCREMENT,
  `taskName` varchar(255) NOT NULL,
  `isActive` boolean DEFAULT TRUE,
  `startDate` datetime NOT NULL,
  `endDate` datetime NOT NULL,
  `completeDate` datetime DEFAULT NULL,
  `complexityID` smallint(6) NOT NULL,
  `managerID` mediumint(9) NOT NULL,
  `projectID` mediumint(9) NOT NULL,
  `requirementName` varchar(255) NOT NULL,
  `xPos` smallint(6) DEFAULT NULL,
  `yPos` smallint(6) DEFAULT NULL,
  `description` text NOT NULL,
  `stageName` enum('Definition','Design','Development','Testing','Evaluation') NOT NULL DEFAULT 'Definition',
  PRIMARY KEY (`taskID`),
  UNIQUE KEY `uniqueOriginalTasks` (`requirementName`,`projectID`,`taskName`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
/*!40101 SET character_set_client = @saved_cs_client */;

--
-- Dumping data for table `OriginalTasks`
--

LOCK TABLES `OriginalTasks` WRITE;
/*!40000 ALTER TABLE `OriginalTasks` DISABLE KEYS */;
/*!40000 ALTER TABLE `OriginalTasks` ENABLE KEYS */;
UNLOCK TABLES;

当前任务无法创建,错误是:

ERROR 1005 (HY000): Can't create table 'rem.currenttasks' (errno: 150)

我只是很困惑,因为我删除了当前任务并将以前的任务复制到其中,将以前的每个任务替换为当前任务,但它仍然无法工作。

最佳答案

您忘记删除 28-31 之间的行。 PreviousTasks 表尚未创建,但这些行尝试更改表。同样的事情也存在于第 64-67 行。

关于mysql - 无法在 mysql 中创建表错误(150),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22598090/

相关文章:

mysql - 根据前 4 个字符将文本添加到选定的数据库列

php - Laravel - 仅选择连接表中的指定列

php - 具有特定字符的数据无法保存到数据库

python - Django 完整性错误 1452,无法添加或更新子行 : a foreign key constraint fails

MySQL 触发插入/更新事件

SQL 文件流身份验证最佳实践

php - 来自同一 ID 的 SQL 列的 SUM 值

MySQL : foreign key error

mysql - 使用 SELECT EXISTS 查找 mysql 中是否存在行

sql - 如何测试 int2vector 是否恰好包含一个特定值?