执行一个Updata语句,发生下面错误。

update meeting set confirmer = confirmer+'马哲,' where ID =7

服务器: 消息 511,级别 16,状态 1,行 1
无法创建大小为 8067 的行,该值大于允许的最大值 8060。
语句已终止。
confirmer varchar(8000)

---------------------------------------------------------------

表的字段总长度超过限值了。
修改一下,使其总长小于8060。
---------------------------------------------------------------

原confirmer值是什么?
select len(confirmer) from meeting where ID =7

---------------------------------------------------------------

表中行的最大允许大小为 8060 字节

举个例子。

create table #t(a varchar(8000),b varchar(8000))

这是允许的。

insert into #t(a) select replicate('a',7000)

这也可以。

但update #t set b = replicate('b',2000)

就报上述错误。

因为7000+2000>8060
---------------------------------------------------------------

長度超過8060(最大值)了
如果有空格:
update meeting set confirmer = rtrim(ltrim(econfirmer))+'马哲,' where ID =7

如果沒有就要減少長度了

---------------------------------------------------------------

update meeting set confirmer=rtrim(confirmer)+"马哲看看",试试。如果超过4000个汉字,就要用TEXT类型了。
---------------------------------------------------------------

你建表的时候:

警告: 已创建表 '你的表',但其最大行大小(16025)超过了每行的最大字节数(8060)。如果结果行长度超过 8060 字节,则此表中行的 INSERT 或 UPDATE 将失败。

---------------------------------------------------------------

可以改用text字段!

Published At
Categories with 数据库类
Tagged with
comments powered by Disqus