代码之家  ›  专栏  ›  技术社区  ›  Tony D.

DataAdapter错误:列超过MaxLength限制

  •  0
  • Tony D.  · 技术社区  · 9 年前

    当我尝试填充数据集数据表时发生错误。

    ds = dsMyDataset;
    sqlAdapter.Fill(ds, dsMyDataset.MyTable.TableName); // Uses the SQLAdapters 'select command'
    

    填充时,我收到以下错误:

    其他信息 :'无法启用约束。一个或多个行包含违反非null、唯一或外键约束的值

    我在命令窗口中运行此命令:

    dsMyDataset.MyTable.GetErrors()[0].RowError
    

    它通知我“列'XMLHistory'超过MaxLength限制。”

    这很奇怪,因为在数据集的长度属性中,该字段的长度为“2147483647”。

    因此,在sqladapter中,我指定了一个大小:

    sqlComm.Parameters.Add("@XMLHistory", SqlDbType.Text, 2147483647, "XMLHistory");
    

    但这显然无助于解决我的问题。还注意到该列的DB大小为“16”。

    现在我注意到一件奇怪的事情。这个程序允许我将数据从一个数据库归档到另一个数据库。所以我有一个用户可以从中选择存档的表列表。奇怪的是,如果我选择一个表,它就可以归档了。我上面列出的这个问题直到 之后 第一个表存档,并且系统尝试移动到第二个表。当它试图填满DS的那一刻,嘘。死去的

    感谢任何建议/想法。干杯

    2 回复  |  直到 9 年前
        1
  •  1
  •   eric1825    9 年前

    我只是在读取旧项目中的数据库时遇到了同样的错误。很奇怪,因为它报告的长度不能超过B列的长度110,但在DB设计中,它是其相邻字段A的大小。然后我把桌子放在了设计器中,重新添加了它。然后它奏效了。自创建xsd以来,数据库中的数据库表设计已被修改。

        2
  •  1
  •   Tony D.    9 年前

    所以我找到了问题。连接到数据集后端的一个xml本身有一个指定最大长度的节点。它设置为7700。此7700正在重写设计器中的属性设置。不确定它是如何开始的,但它非常令人沮丧。

    谢谢大家的帮助。