MySQL
列をUNIQUE KEY
としてmediumtext
サーバーにテーブルを作成したい
CREATE TABLE `parts` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` mediumtext NOT NULL,
`display_status` int(11) NOT NULL,
UNIQUE KEY `name` (`name`),
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
しかし、これはエラーを作りました
BLOB/TEXT column 'name' used in key specification without a key length
`name`のタイプをvarcharに変更すると、動作します!
テキスト列をUNIQUE KEY
として作成できるかどうかわかりますか
基本的に、Text
列をUNIQUE
キーとして使用することはできません。実際には、このような大きな列は一意ではなく、さらに重複する可能性があるためです。そのため、hashing
メソッドに進み、その出力をUNIQUE制約として使用します。
これがあなたを助けることを願っています
Varcharの長さの255という制限は適用されなくなりました。 ドキュメント から:
VARCHAR列の値は可変長文字列です。長さは、MySQL 5.0.3より前の0〜255、および5.0.3以降のバージョンでは0〜65,535の値として指定できます。
一意のインデックスには既知の最大長(内部実装によるmysqlの要件)が必要であるため、最長予想値に適合するのに十分な大きさの値を持つvarcharを使用します。
...
`name` varchar(65535) NOT NULL, -- for example
...