MySQL一直在抱怨外键。错误150

时间:2015-06-27 23:16:42

标签: mysql sql database foreign-keys

我正在尝试创建一个带有外键的表。我想建模一个可以成为另一个类别的孩子的类别。这是我的SQL:

CREATE TABLE IF NOT EXISTS `recipes`.`category` (
  `id` INT NOT NULL COMMENT '',
  `name` VARCHAR(60) NOT NULL COMMENT '',
  `description` VARCHAR(255) NULL COMMENT 'Description of the recipe category.',
  `parent_id` INT NULL COMMENT '',
  PRIMARY KEY (`id`)  COMMENT '',
  CONSTRAINT `parent_id`
    FOREIGN KEY (`id`)
    REFERENCES `recipes`.`category` (`id`)
    ON DELETE NO ACTION
    ON UPDATE NO ACTION);

然而,MySQL一直给我一个错误:

  

无法创建表'recipes.category'(错误号:150)

我试图找出我做错了什么,有人能给我一个暗示吗?文档说:

  

无法创建表格。如果错误消息引用错误150,表   创建失败,因为外键约束不正确   形成。

然而,这对我没什么帮助。

1 个答案:

答案 0 :(得分:2)

我想您希望const addButton =<HTMLButtonElement>document.querySelector("#addButton"); const saveButton = document.querySelector("#saveButton"); const itemsSection = document.querySelector("#itemsSection"); const itemArray: Array<string> = []; let itemElement; let newItem: string; let itemText: string; //add new item to shopping list addButton.onclick=function addItem(){ //add each item to the list itemElement = document.createElement("li"); newItem = (<HTMLInputElement>document.querySelector("#newItem")).value; itemText = document.createTextNode(newItem); itemElement.appendChild(itemText); itemsSection.appendChild(itemElement); document.querySelector("#newItem").value=""; // ***here** store the index of the element: itemElement.id = "itemIndex_" + (itemArray.push(newItem) -1); console.log(itemArray); itemElement.onclick=function deleteItem(){ // get my index from my ID rather than indexOf: var index=parseInt(this.id.split('_')[1]); this.parentNode.removeChild(this); itemArray.splice(index,1); console.log(itemArray); } } 列链接到parent_id列的外键(而不是id列到id )构建层次结构。否则它没有多大意义:

id

SQLFiddle