【问题标题】:Arithmetic overflow error converting numeric to data type numeric将数字转换为数据类型数字的算术溢出错误
【发布时间】:2013-05-27 13:45:32
【问题描述】:

在过去的几周里,我客户的客户在他们的网站上运行任何类型的查询时都会收到以下错误。我不精通 SQL,所以任何帮助将不胜感激。

堆栈跟踪:

[SqlException (0x80131904): 算术溢出错误转换 数字到数据类型数字。]
System.Data.SqlClient.SqlConnection.OnError(SqlException 异常, 布尔中断连接)+1951066
System.Data.SqlClient.SqlInternalConnection.OnError(SqlException 异常,布尔型 breakConnection) +4847051
System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj) +194 System.Data.SqlClient.TdsParser.Run(RunBehavior runBehavior、SqlCommand cmdHandler、SqlDataReader 数据流、 BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj) +2392 System.Data.SqlClient.SqlDataReader.HasMoreRows() +157 System.Data.SqlClient.SqlDataReader.ReadInternal(Boolean setTimeout) +197 System.Data.SqlClient.SqlDataReader.Read() +9
System.Data.Common.DataAdapter.FillLoadDataRow(SchemaMapping 映射) +78 System.Data.Common.DataAdapter.FillFromReader(DataSet dataset, DataTable datatable, String srcTable, DataReaderContainer dataReader, Int32 startRecord, Int32 maxRecords, DataColumn parentChapterColumn, 对象 parentChapterValue) +164
System.Data.Common.DataAdapter.Fill(DataSet 数据集,字符串 srcTable, IDataReader dataReader, Int32 startRecord, Int32 maxRecords) +353
System.Data.Common.DbDataAdapter.FillInternal(数据集数据集, DataTable[] 数据表,Int32 startRecord,Int32 maxRecords,字符串 srcTable、IDbCommand 命令、CommandBehavior 行为)+164
System.Data.Common.DbDataAdapter.Fill(数据集数据集,Int32 startRecord,Int32 maxRecords,String srcTable,IDbCommand 命令, 命令行为行为)+287
System.Data.Common.DbDataAdapter.Fill(数据集数据集,字符串 srcTable) +92
System.Web.UI.WebControls.SqlDataSourceView.ExecuteSelect(DataSourceSelectArguments 参数)+1297 System.Web.UI.WebControls.Repeater.GetData() +35
System.Web.UI.WebControls.Repeater.CreateControlHierarchy(布尔 使用数据源)+220
System.Web.UI.WebControls.Repeater.OnDataBinding(EventArgs e) +51
System.Web.UI.WebControls.Repeater.DataBind() +75
System.Web.UI.WebControls.Repeater.EnsureDataBound() +55
System.Web.UI.WebControls.Repeater.OnPreRender(EventArgs e) +15
System.Web.UI.Control.PreRenderRecursiveInternal() +80
System.Web.UI.Control.PreRenderRecursiveInternal() +171
System.Web.UI.Control.PreRenderRecursiveInternal() +171
System.Web.UI.Control.PreRenderRecursiveInternal() +171
System.Web.UI.Control.PreRenderRecursiveInternal() +171
System.Web.UI.Page.ProcessRequestMain(布尔值 includeStagesBeforeAsyncPoint,布尔型 includeStagesAfterAsyncPoint) +842

【问题讨论】:

标签: sql


【解决方案1】:

sum(col1) 更改为sum(cast(col1 as bigint)) 以动态更改当前列的类型或在表格设计模式下更改。

【讨论】:

    【解决方案2】:

    看的地方是:

    1. 有一个更新查询正在尝试将 int(或其他一些小数字数据类型)更改为更大的数字数据类型(如单数或双精度数)。
    2. 它正在尝试具有相同条件的 isert。

    专注于寻找带有数值字段的改变值的东西,并检查哪些数据类型试图做出这些改变。当您看到不匹配时,这很可能是您的罪魁祸首。

    【讨论】:

      猜你喜欢
      • 2021-10-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多