MySQL: невозможно создать таблицу (номер ошибки: 150) - PullRequest
149 голосов
/ 31 октября 2010

Я пытаюсь импортировать файл .sql и при создании таблиц происходит сбой.

Вот запрос, который не удался:

CREATE TABLE `data` (
`id` int(10) unsigned NOT NULL,
`name` varchar(100) NOT NULL,
`value` varchar(15) NOT NULL,
UNIQUE KEY `id` (`id`,`name`),
CONSTRAINT `data_ibfk_1` FOREIGN KEY (`id`) REFERENCES `keywords` (`id`) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=latin1;    

Я экспортировал .sql из той же базы данных, я удалил все таблицы, и теперь я пытаюсь импортировать его, почему он не работает?

MySQL: невозможно создать таблицу './dbname/data.frm' (номер ошибки: 150)

Ответы [ 33 ]

1 голос
/ 22 ноября 2014

Столбец таблицы PARENT, на которую вы ссылаетесь из дочерней таблицы, должен быть уникальным. Если это не так, вызвать ошибку № 150.

0 голосов
/ 21 июля 2018

Если вы воссоздаете таблицу, которая была отброшена, у нее должно быть определение, соответствующее ограничениям внешнего ключа, на которые она ссылается. У него должны быть правильные имена и типы столбцов, и он должен иметь индексы на ссылочных ключах, как указано ранее. Если они не удовлетворены, MySQL возвращает Ошибка 1005 и ссылается на Ошибка 150 в сообщении об ошибке, что означает, что ограничение внешнего ключа было сформировано неправильно. Аналогичным образом, если ALTER TABLE завершится неудачно из-за ошибки 150, это означает, что определение внешнего ключа будет неправильно сформировано для измененной таблицы.

0 голосов
/ 07 августа 2012

Попробуйте:

CREATE TABLE `data` (
  `id` int(10) unsigned NOT NULL,
  `name` varchar(100) NOT NULL,
  `value` varchar(15) NOT NULL,
UNIQUE KEY `id` (`id`,`name`),
CONSTRAINT `data_ibfk_1`,
FOREIGN KEY (`id`) REFERENCES `keywords` (`id`) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=latin1;  

Вам нужно поставить "," между CONSTRAINT и FOREIGN.

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