我正在尝试将字符串保存到db中,该列保存此字符串值为VARCHAR2(400字节),我在textarea中输入了长度为399的字符串,但这会导致问题。我使用的是实体框架和oracle,db中的字符编码是UTF8。 顺便说一句,还有另一列长度为VARCHAR2(1字节),我在前端输入了1个字符,效果很好。 有谁知道这是什么问题?
更新: 我试图在oracle SQL开发人员中插入相同的字符串,它的工作原理。所以我认为问题来自实体框架。
更新-2: 检查了EntityValidationErrors的更多细节,发现有另一个表来存储该值,该表用于编辑记录,该列少于400个字节。发现问题,谢谢大家。
答案 0 :(得分:-1)
如果你看这里它应该告诉你关于你想知道的varchar的一切:http://dev.mysql.com/doc/refman/5.0/en/char.html
基本上,根据您选择的长度,它将使用1或2个字节来跟踪该列中当前字符串的长度,因此它将存储您放入的数据的字节数,加上一个或两个字节
所以,如果你放入' abc'然后它将用于该行中该列的4或5个字节。
如果你使用char(15),那么甚至' abc'将占用15个字节,因为数据是右边填充的,用完了15个字节。