SqlDateTime overflow. Må være mellom 1.1.1.1753 00:00:00 og 31.12.999 23:59:59
Da jeg utførte oppdateringsoperasjonen fra nettsiden, fikk jeg stadig en feil, og jeg trodde det var XML-konfigurasjonen eller at noe hadde gått galt da SQL-setningen ble kjørt
Jeg prøvde å bruke SQL Query Analyzer for å hente de genererte SQL-setningene, og fant ut hva er problemet med korrekt utførelse? SQL-setningen er som følger:
exec sp_executesql N'INSERT INTO DBO. LeanLogs (Version, OrganizationId, CustomInfoId, LastLeanAlarmType, NowLeanAlarmType, InsertTime, TreatedTime) VALUES (@p0, @p1, @p2, @p3, @p4, @p5, @p6); select SCOPE_IDENTITY()',N'@p0 int,@p1 int,@p2 int,@p3 int,@p4 int,@p5 datetime,@p6 datetime',@p0=1,@p1=35,@p2=12,@p3=10,@p4=10,@p5='2017-09-13 13:09:41',@p6=NULL SqlDateTime overflow. En resolusjon må --- mellom 01.01.1753 00:00:00 og 31.12.9999 23:59:59
Feilårsak
Hvis verdien av tidstypen som sendes til databasen er NULL, eller når databasen settes inn eller oppdateres for DateTime.MinValue, er datetime-feltverdien null som standard. NULL refererer her til null i programkoden, og de fleste scenarioene hvor dette skjer er: en tidstypevariabel defineres i programmet, og den sendes til databasen (eller lagret prosedyre) uten å tildele en verdi. På dette tidspunktet tildeles verdien til denne variabelen 01/01/01 som standard. Siden DateTime-typefeltet i databasen, er minimumsverdien 1/1/1753 12:00:00, mens . NET Framework, DateTime-typen, minimumsverdien er 1/1/0001 0:00:00, åpenbart utenfor minimumsverdiområdet til SQL-verdien, noe som resulterer i en dataoverløpsfeil. La oss se på hvordan du kan se .net og sql maks min tid gjennom C#:
Utgangseffekt:
Til slutt ble det tuklet med i mer enn ti minutter,
De siste feilårsakene er som følger:
En av attributttypene til objektet er også et objekt, det vil si at tabellen har en fremmednøkkel, og et nytt datetime-attributt legges til fremmednøkkeltabellen, som ikke er tildelt en verdi og ikke er satt til nullbar type
Når man legger til eller oppdaterer et objekt, knyttes datotidspunktet til fremmednøkkelobjektet automatisk til standardverdien, fordi tidspunktet for .net-standardverdien er mindre enn standard minimumstid i databasen
Løsning: Sett egenskapen til en datetime-type for fremmednøkkelobjektet til null type, hjelp kolleger å løse det perfekt!
|