1

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 つのテーブル間の関係を作成することはまだできないようです。同じエラーが発生します

これが私が今いるところです。

ここに画像の説明を入力

4

1 に答える 1