刚才修改表结构:
alter table room add CONSTRAINT roomname_unique UNIQUE(roomname);
结果提示如下错误:
ERROR 1071 : Specified key was too long; max key length is 767 bytes
搞了一会没明白,上网搜了。
原因如下:
+----------+---------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+----------+---------------+------+-----+---------+----------------+
| roomid | int(10) | NO | PRI | NULL | auto_increment |
| roomname | varchar(1024) | NO | | | |
| capacity | int(10) | NO | | 8 | |
| cost | decimal(10,0) | NO | | 0 | |
| count | decimal(10,0) | NO | | 0 | |
| status | int(1) | NO | | 0 | |
| comment | varchar(1024) | YES | | | |
| deleted | int(1) | NO | | 1 | |
+----------+---------------+------+-----+---------+----------------+
我的roomname字段长度设定的是varchar(1024),1024长于767bytes。
database维护索引是需要开销的,所以数据库不会使它过大。Mysql数据库的varchar长度被限制在0~65535之间。