Я пытаюсь добавить внешний ключ в таблицу в Sequel Pro (используя пользовательский интерфейс).Как добавить внешний ключ в таблицу в Sequel Pro?
У меня есть две таблицы: «заголовки» и «категории», как показано ниже:
CREATE TABLE `titles` (
`id` int(11) unsigned NOT NULL AUTO_INCREMENT,
`title` tinytext NOT NULL,
`category` varchar(256) NOT NULL DEFAULT '',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
CREATE TABLE `category` (
`key` int(11) unsigned NOT NULL AUTO_INCREMENT,
`name` varchar(256) NOT NULL DEFAULT '',
PRIMARY KEY (`key`)
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=latin1;
Я хочу, чтобы создать внешний ключ, но я ничего не попробовать работ.
Таблица категорий должна быть простой справочной таблицей. Я хочу присвоить каждому титулу категорию из примерно 6 - 8 разных вариантов.
Первоначально я имел поля категории, как TINYTEXT, но я получаю сообщение об ошибке:
"MySQL Ошибка 1170 (42000): BLOB/TEXT Колонка Используется в Key спецификации без ключа Длина".
Искал здесь и обнаружил, вы не можете использовать текстовое поле, путь, поэтому я перешел на Varchar и добавил длиной 256. Теперь я получаю:
MySQL сказал: Невозможно создать таблицу «букв # sql-2bf3_2 '(errno: 150).
Как создать внешний ключ для моего стола?
В Access это довольно легко сделать. Как-то Access связывает уникальный ключ в таблице с поиском, но затем скрывает ключ и показывает вам текстовое поле. Как я могу получить аналогичный результат с Sequel Pro и MySQL?
EDIT:
Таким образом, чтобы уточнить это, где я нахожусь сейчас. Я добавил индекс в поле категории в таблице заголовков (первое изображение).
Я изменил поле «ключ» в таблице категорий на CategoryID (второе изображение).
Однако я все еще не могу создать связь между двумя таблицами. Я получаю ту же ошибку
Ваш внешний ключ и его ссылка должны быть одного и того же типа. измените категорию на INT на заголовки и сначала проиндексируйте ее. – nomistic