Indexing a MySql TEXT column?

2019-01-18 01:18发布

I ran this using MySql and it appears to not like TEXT. With SQL server I use nvarchar(max) What should I use in MySql? In other tables some fields will be descriptions and may be long so at the moment I am thinking that fixed length is bad.

create table if not exists 
    misc_info (
        id INTEGER PRIMARY KEY AUTO_INCREMENT NOT NULL,
        key TEXT UNIQUE NOT NULL,
        value TEXT NOT NULL
    )ENGINE=INNODB;

3条回答
一夜七次
2楼-- · 2019-01-18 01:37

You can't have a UNIQUE index on a text column in MySQL.

If you want to index on a TEXT or a BLOB field, you must specify a fixed length to do that.

From MySQL documentation:

BLOB and TEXT columns also can be indexed, but a prefix length must be given.

Example:

CREATE UNIQUE INDEX index_name ON misc_info (key(10));
查看更多
家丑人穷心不美
3楼-- · 2019-01-18 01:41

I think it chokes on the key field name rather than the TEXT type (which should be perfectly fine).

Reserved Words in mySQL

(And as @Pablo already said, memo fields can't be unique.)

查看更多
来,给爷笑一个
4楼-- · 2019-01-18 01:54

Two things:

  1. Key is a reserved word.
  2. You have to specify a length for a UNIQUE(key) TEXT value.
查看更多
登录 后发表回答