我正在尝试向 Sequel Pro 中的表添加外键(使用 UI)。
我有两个表:“标题”和“类别”,如下所示:
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 列”。
在这里搜索,发现你不能那样使用文本字段,所以我切换到 Varchar 并添加了 256 的长度。现在我得到:
MySQL 说:无法创建表 'lit.#sql-2bf3_2' (errno: 150)。
如何为我的表创建外键?
在 Access 中,这很容易做到。Access 以某种方式将表中的唯一键与查找相关联,但随后隐藏了键并改为显示文本字段。如何使用 Sequel Pro 和 MySQL 获得类似的结果?
编辑:
所以,要澄清这就是我现在所处的位置。我在标题表中的类别字段上添加了一个索引(第一张图片)。
我已将类别表中的“关键”字段更改为 CategoryID(第二张图片)。
但是,我似乎仍然无法创建两个表之间的关系。我犯了同样的错误