Dit artikel is een spiegelartikel van machinevertaling, klik hier om naar het oorspronkelijke artikel te gaan.

Bekijken: 22966|Antwoord: 1

[Bron] spring.net nhibernate sqldatetime overflow solution

[Link kopiëren]
Geplaatst op 13-09-2017 14:34:58 | | | |
SqlDateTime overflow. Moet zijn tussen 1/1/1753 00:00:00 en 31/12/9999 23:59:59




Bij het uitvoeren van de update-operatie vanaf de website kreeg ik steeds een foutmelding, en ik dacht dat het de XML-configuratie was of dat er iets mis was gegaan toen de SQL-instructie werd uitgevoerd

Ik probeerde SQL query analyzer te gebruiken om de gegenereerde SQL-statements te halen, en ontdekte wat het probleem is met de juiste uitvoering? De SQL-instructie is als volgt:

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. Een resolutie moet worden --- tussen 1-1-1753 00:00:00 en 31-12-9999 23:59:59

Foutoorzaak

    Als de waarde van het tijdstype dat aan de database is doorgegeven NULL is, of bij het invoegen of updaten van de database voor DateTime.MinValue, is de datetime-veldwaarde standaard nul.
    NULL verwijst hier naar null in de programmacode, en de meeste scenario's waarin dit gebeurt zijn: een tijdtypevariabele wordt in het programma gedefinieerd en wordt doorgegeven aan de database (of opgeslagen procedure) zonder een waarde toe te wijzen. Op dit moment wordt de waarde van deze variabele standaard 01/01/01 toegewezen.
     Sinds het DateTime-typeveld in de database is de minimale waarde 1/1/1753 12:00:00, terwijl de . NET Framework, het type DateTime, heeft een minimale waarde van 1/1/0001 0:00:00, uiteraard buiten het minimumwaardebereik van de SQL-waarde, wat resulteert in een data-overflowfout.
    Laten we eens kijken hoe je .net en sql de maximale minimale tijd via C# kunt zien:


Output-effect:



Uiteindelijk werd het meer dan tien minuten geknutseld,

De uiteindelijke foutoorzaken zijn als volgt:

Een van de attribuuttypen van het object is ook een object, dat wil zeggen, de tabel heeft een vreemde sleutel, en een nieuw datetime-attribuut wordt toegevoegd aan de vreemde sleutel-tabel, die geen waarde krijgt en niet is ingesteld op een nulleerbaar type

Bij het toevoegen of updaten van een object wordt de datumtijd van het vreemde sleutelobject automatisch gekoppeld aan de standaardwaarde, omdat de tijd van de .net-standaardwaarde kleiner is dan de standaard minimumtijd van de database

Oplossing: Stel de eigenschap van een datetime-type van het vreemde sleutelobject in op nul-type, help collega's het perfect op te lossen!







Vorig:.net/c# Operatie Redis cache toevoegen, verwijderen, wijzigen en opvragen [broncode]
Volgend:asp.net Foutanalyse van website-anomaliefouten
Disclaimer:
Alle software, programmeermaterialen of artikelen die door Code Farmer Network worden gepubliceerd, zijn uitsluitend bedoeld voor leer- en onderzoeksdoeleinden; De bovenstaande inhoud mag niet worden gebruikt voor commerciële of illegale doeleinden, anders dragen gebruikers alle gevolgen. De informatie op deze site komt van het internet, en auteursrechtconflicten hebben niets met deze site te maken. Je moet bovenstaande inhoud volledig van je computer verwijderen binnen 24 uur na het downloaden. Als je het programma leuk vindt, steun dan de echte software, koop registratie en krijg betere echte diensten. Als er sprake is van een inbreuk, neem dan contact met ons op via e-mail.

Mail To:help@itsvse.com