将大量文本存储在一个值为varchar(数据库)的值中

时间:2012-04-26 06:03:49

标签: mysql database

我在前端应用程序中有一个非常简单的文本框(如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个字符?

1 个答案:

答案 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;