Sequel Pro のテーブルに外部キーを追加しようとしています (UI を使用)。
以下のように、「タイトル」と「カテゴリ」の2つのテーブルがあります。
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 で同様の結果を得るにはどうすればよいですか?
編集:
ですから、これを明確にするために、私は今どこにいますか。titles テーブルのカテゴリ フィールドにインデックスを追加しました (最初の画像)。
カテゴリ テーブルの「キー」フィールドを CategoryID (2 番目の図) に変更しました。
ただし、2 つのテーブル間の関係を作成することはまだできないようです。同じエラーが発生します