我在前端应用程序中有一个非常简单的文本框(如php,尽管语言无关紧要),并且插入到下面定义的数据库的表中的description列中:
表(ID [主键],描述[varchar(255)])
虽然它不会经常发生,但有时需要为一个元组插入超过255个字符。我可以增加varchar的长度,但是对元组大小有限制,所以要安全地保持它在建议的最大值为255。
我能弄清楚如何做到这一点的唯一方法是拥有2个表并将文本分成255个字符。表定义为:
表1(ID [主键] ..........)
表2(ID,table1ID [表1的外键]描述[varchar(255)])
有没有更好的方法来实现这一目标?
编辑:Mysql版本5.5.11 不知道有文本数据类型。可能是新的。听起来像是一种应用程序对象,但是它足够灵活,平均可以存储150个字符,10%的时间存储接近5000个字符?
答案 0 :(得分:2)
如果使用MySQL 5.0.3或更高版本,您只需增加VARCHAR
的大小即可。根据{{3}}:
VARCHAR
列中的值是可变长度字符串。长度可以指定为MySQL 5.0.3之前的0到255之间的值,5.0.3及更高版本中的0到65,535之间的值。 MySQL 5.0.3及更高版本中VARCHAR
的有效最大长度取决于最大行大小(65,535字节,在所有列之间共享)和使用的字符集。请参阅manual。
为此,您可以这样做:
ALTER TABLE tablename MODIFY description VARCHAR(...) [NOT] NULL;
或者您可以使用Section E.7.4, “Table Column-Count and Row-Size Limits”类型:
ALTER TABLE tablename MODIFY description TEXT [NOT] NULL;