MySQL ERROR 1005, невозможно создать таблицу errno 150 - PullRequest
0 голосов
/ 29 ноября 2018

Я пытаюсь подключить "статьи> a_keywords" к "art_keys> art_id"

таблица статей:

| articles | CREATE TABLE `articles` (
  `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
  `title` varchar(50) DEFAULT NULL,
  `source` varchar(255) DEFAULT NULL,
  `press` varchar(60) DEFAULT NULL,
  `date` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  `a_keywords` int(10) unsigned DEFAULT NULL,
  PRIMARY KEY (`id`),
  UNIQUE KEY `id` (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=latin1 |

таблица art_keys:

| art_keys | CREATE TABLE `art_keys` (
  `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
  `art_id` int(10) unsigned DEFAULT NULL,
  `keyw_id` int(10) unsigned DEFAULT NULL,
  PRIMARY KEY (`id`),
  UNIQUE KEY `id` (`id`),
  KEY `keyw_id` (`keyw_id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 |

Команда внешнего ключа:

ALTER TABLE articles ADD FOREIGN KEY (a_keywords) REFERENCES art_keys(art_id);

Я успешно соединил "ключевые слова> k_articles" и "art_keys> keyw_id", но я не знаю, почему это не работает с "article> a_keywords".

Я попытался создать новую таблицу со столбцами id и a_keywords, но все равно не получилось.Я считаю, что исправил все причины, перечисленные в: http://www.eliacom.com/mysql-gui-wp-errno-150.php Помогите мне!

| keywords | CREATE TABLE `keywords` (
  `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
  `words` varchar(100) DEFAULT NULL,
  `k_articles` int(10) unsigned DEFAULT NULL,
  PRIMARY KEY (`id`),
  UNIQUE KEY `id` (`id`),
  KEY `k_articles` (`k_articles`),
  CONSTRAINT `keywords_ibfk_1` FOREIGN KEY (`k_articles`) REFERENCES `art_keys` (`keyw_id`)
) ENGINE=InnoDB AUTO_INCREMENT=8 DEFAULT CHARSET=latin1 |

1 Ответ

0 голосов
/ 29 ноября 2018

На всякий случай, если кто-то может столкнуться с той же проблемой, с которой я столкнулся. Из-за короткого неведения я оставляю решение, которое нашел.Столбец, на который вы пытаетесь сослаться (столбец родительской таблицы), должен быть проиндексирован.Я подумал, что должен быть один индексированный столбец ...

в моем примере, art_id в таблице art_keys необходимо индексировать с помощью:

alter table add index art_id(art_id)

перед ссылкойв декларации внешнего ключа.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...