文系Webエンジニアの技術メモとたまに旅のメモ

未経験文系エンジニアとして働いてます。アウトプットとして簡単に技術メモを残していきます。たまに旅関係のも趣味で残していこうと思ってます。

【MySQL】テーブル作成時、text型にprimary key設定したら「ERROR 1170 (42000): BLOB/TEXT column 'column_name' used in key specification without a key length」と怒られた時の解決方法。

MySQLでtext型をprimary key に設定したらエラーになり実行ができなかったので
その時の、解決方法を記していきます。

1.CREATE文の実行

testテーブルの作成を行ないます。
※あまり使う事はないとは思いますが、「text」カラムにPRIMARY KEYの設定を行ないます。

-- MySQL
CREATE TABLE test (
  id INT(11) NOT NULL,
  text TEXT NOT NULL, 
  PRIMARY KEY (text)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

2.エラー内容

PRIMARY KEYに設定した「text」カラムの長さが設定されていない。とエラーが出ています。

ERROR 1170 (42000): BLOB/TEXT column 'text' used in key specification without a key length

3.解決方法

下記の通り、PRIMARY KEYに長さを記述します。

PRIMARY KEY (text)
↓
PRIMARY KEY (text(255))

修正したSQL文を実行します。

-- MySQL
CREATE TABLE test (
  id INT(11) NOT NULL,
  text TEXT NOT NULL, 
  PRIMARY KEY (text(255))
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

Query OK, 0 rows affected (0.13 sec)

無事実行できました!
最大が255までなので、それ以下の長さを設定しましょう。