SQL 字符串或二进制数据将被截断,列名
Posted
技术标签:
【中文标题】SQL 字符串或二进制数据将被截断,列名【英文标题】:SQL string or binary data would be truncated , column name 【发布时间】:2018-12-12 00:46:28 【问题描述】:我们有一个简单的 UI 应用程序,我们使用 SQL Server 数据库。问题是当用户提供的数据超过列长度并因此出现错误时:
字符串或二进制数据将被截断
是否可以在运行时找到导致此问题的列?我们的应用程序的设计方式是 UI 标签和列名是同步的。因此,如果我们可以在运行时找到列名,那么我们可以让用户在现场进行更正。
任何帮助将不胜感激。
【问题讨论】:
这是 sql server 中运行时间最长且令人恼火的问题之一。引擎不会告诉您哪一列有问题,即使它显然知道。您应该修复您的应用程序以不允许比列允许更多的字符。是的,这很烦人,但十多年来(或者现在可能接近两年),这一直是许多人希望解决的问题。 没有。去投票。 feedback.azure.com/forums/908035-sql-server/suggestions/… 同时,编写应用程序,使字段长度不能超过列长度。 ...如果您的应用程序已经将字符串限制为与数据库相同的长度,您将没有要跟踪的列。您是否查看了已解决此错误消息的 the 600+ other questions? 如果这是一个 mvc 应用程序,那么只需在您的属性上添加一个[StringLength]
属性,以便您获得客户端和服务器端验证。
【参考方案1】:
错误信息非常清楚:您试图放入此类字段的数据对于该字段本身来说太大了。检查您的插入语句。
然后查看列定义:您定义的长度为(例如)10 或 50 个字符,但您尝试插入的数据比这更长。 要么增加列的大小,要么减少要发送的数据的大小。
希望对你有所帮助..
【讨论】:
以上是关于SQL 字符串或二进制数据将被截断,列名的主要内容,如果未能解决你的问题,请参考以下文章
SQL Server (0x80131904):字符串或二进制数据将被截断 [重复]