为给表register添加一列,但出现错误。错误为:ERROR 1170 (42000): BLOB/TEXT column 'realm' used in key specification without a key length表的定义为
CREATE TABLE `register` (
`username` text,
`realm` tinytext,
`password` tinytext,
`token` varchar(10) default NULL,
`sequence` int(11) default NULL,
`hash` varchar(40) default NULL,
KEY `username` (`username`(255)),
KEY `realm` (`realm`(255))
) ENGINE=InnoDB DEFAULT CHARSET=utf8修改表插入一列的语句为:alter table register add column nickname tinytext after password;搜了一下都是关于主键若是BLOB类型的,需要指定长度。可是我在定义的时候已经指定了长度,为什么修改表的时候出错呢?
CREATE TABLE `register` (
`username` text,
`realm` tinytext,
`password` tinytext,
`token` varchar(10) default NULL,
`sequence` int(11) default NULL,
`hash` varchar(40) default NULL,
KEY `username` (`username`(255)),
KEY `realm` (`realm`(255))
) ENGINE=InnoDB DEFAULT CHARSET=utf8修改表插入一列的语句为:alter table register add column nickname tinytext after password;搜了一下都是关于主键若是BLOB类型的,需要指定长度。可是我在定义的时候已经指定了长度,为什么修改表的时候出错呢?
如果我直接写在create语句中就没有错,alter就有错。是我的alter语句不对吗?
CREATE TABLE `register` (
`username` text,
`realm` tinytext,
`password` tinytext,
`token` varchar(10) default NULL,
`sequence` int(11) default NULL,
`hash` varchar(40) default NULL
) ENGINE=innodb DEFAULT CHARSET=utf8 ;
alter table register add nickname tinytext not null after `password`;
alter table register add key idx_realm (realm(255)),add key idx_username (username(255));
但我现在表已经建立了,里面也保存数据了,我不想drop这个表。
alter语句可不可以将“KEY ·uername·(username(255))"键值约束取掉,然后再插入一列,然后再加上键值约束
tinytext 等价于 varchar(255)好好想想怎么回事!!!