Die Konvertierung von varchar-Wert '9000437060' überlauf einer int-Spalte. Maximale integer-Wert überschritten
Ich habe Schwierigkeiten, herauszufinden, diese stack-trace, ist alles Weg von .Aber NET weil Ihr alle gebunden an eine MSSQL 2000 Server, dass der IT-admin ist nicht bereit zu aktualisieren, ich habe immer noch sehr viel niedriger Priorität apps, die eine Verbindung mit ihm, wenn etwas schief geht. Nomrally sehe ich nur einen stack, aber hier scheint es zwei. Ich kann auch nicht sagen, welche Datei es zu wollen, mich zu überprüfen, weil das Problem in der Regel ist bei der stack-Spitze? Tue ich das hauptsächlich PHP, also eine Menge von dieser ist ungewohnt für mich.
Die stack(s) sind hier.
[SqlException (0x80131904): The conversion of the varchar value '9000437060' overflowed an int column. Maximum integer value exceeded.]
System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection) +1950890
System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection) +4846875
System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj) +194
System.Data.SqlClient.TdsParser.Run(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, 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 mapping) +78
System.Data.Common.DataAdapter.FillFromReader(DataSet dataset, DataTable datatable, String srcTable, DataReaderContainer dataReader, Int32 startRecord, Int32 maxRecords, DataColumn parentChapterColumn, Object parentChapterValue) +164
System.Data.Common.DataAdapter.Fill(DataSet dataSet, String srcTable, IDataReader dataReader, Int32 startRecord, Int32 maxRecords) +353
System.Data.Common.DbDataAdapter.FillInternal(DataSet dataset, DataTable[] datatables, Int32 startRecord, Int32 maxRecords, String srcTable, IDbCommand command, CommandBehavior behavior) +164
System.Data.Common.DbDataAdapter.Fill(DataSet dataSet, Int32 startRecord, Int32 maxRecords, String srcTable, IDbCommand command, CommandBehavior behavior) +287
System.Data.Common.DbDataAdapter.Fill(DataSet dataSet) +94
MV.Library.UserHandler.GetByMaryvilleID(String maryvilleID) in C:\Code\MV\MV.Library\User.cs:333
[UserException: UserHandler()::Get: UserHandler - The conversion of the varchar value '9000437060' overflowed an int column. Maximum integer value exceeded.]
MV.Library.UserHandler.GetByMaryvilleID(String maryvilleID) in C:\Code\MV\MV.Library\User.cs:341
Apps.rewards.administrator.Event.btnAddAttendee_Click(Object sender, EventArgs e) in C:\Code\Web\Apps\Apps\rewards\administrator\Event.aspx.cs:122
System.Web.UI.WebControls.Button.OnClick(EventArgs e) +111
System.Web.UI.WebControls.Button.RaisePostBackEvent(String eventArgument) +110
System.Web.UI.WebControls.Button.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent(String eventArgument) +10
System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler sourceControl, String eventArgument) +13
System.Web.UI.Page.RaisePostBackEvent(NameValueCollection postData) +36
System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +1565
Von dem, was ich recherchiert
Die app versucht zu speichern, die mehr bytes in der Spalte als int-Typ ermöglicht. Ich plante zu ändern Tabelle Spalte vom Datentyp nvarchar oder "bigint" - aber Frage mich, ob das war alles, was ich tun musste? Würde nvarchar die bessere Wahl sein?
Vielen Dank im Voraus.
- wenn Ihre Daten ist eigentlich eine Zahl, dann verwenden Sie einen numerischen Typ, z.B. vom Datentyp bigint. Sie sollten nicht speichern zahlen als strings. Nicht, es sei denn, Ihre zahlen sind SO groß, dass Sie überlauf bigint-Typen sowie.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Einer
int
max-Wert-Bereich ist2^32
so mit dem Zeichen =-2147483648
zu2147483648
oder unsigned0
zu4294967296
Ihren Wert9000437060
, ist größer. Sie brauchen einelong
die in SQL ist eineBIGINT
Sieht aus wie Sie sind überfüllt eine
int
mit dem Wert aus der Datenbank. Versuchen Sie, Ihre c# - Datentyplong