Ez a cikk egy tükör gépi fordítás, kérjük, kattintson ide, hogy ugorjon az eredeti cikkre.

Nézet: 22966|Válasz: 1

[Forrás] spring.net nhibernate SQLatDateTime overflow solution

[Linket másol]
Közzétéve 2017. 09. 13. 14:34:58 | | | |
SqlDateTime overflow. Kell lennie 1753.01.01. 01:00:00 és 12/31.9999 23:59:59 között




Amikor a weboldalról végrehajtottam a frissítési műveletet, folyamatosan hibát kaptam, és azt hittem, az XML konfiguráció miatt van, vagy valami rosszul ment az SQL utasítás végrehajtása után

Próbáltam SQL lekérdezési analizátort használni, hogy megszerezzem a generált SQL utasításokat, és rájöttem, hogy mi a probléma a helyes végrehajtással? Az SQL állítás a következő:

A EXEC sp_executesql N'INSERT A DBO-ba. LeanLogs (Version, OrganizationId, CustomInfoId, LastLeanAlarmType, nowLeanAlarmType, InsertTime, TreatedTime) ÉRTÉKEK (@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. A határozatot 1753.01.01. 12:00:00 és 12/31 17999 óra 23:59:59:59 között kell ---

Hiba oka

    Ha az adatbázisba továbbított időtípus értéke NULL, vagy amikor a DateTime.MinValue adatbázist illesztik vagy frissítik, akkor a datetime mező értéke alapértelmezetten null.
    A NULL itt a null-t jelenti a programkódban, és a legtöbb ilyen helyzet a programban egy időtípusú változót definiál, és érték hozzáadása nélkül továbbítják az adatbázisba (vagy tárolt eljáráshoz). Ekkor ennek a változónak az értéke alapértelmezetten 01/01/01 értéket kap.
     Mivel a DateTime típusmező az adatbázisban, a minimális érték 1/1/1753 12:00:00, míg . A NET keretrendszer, a DateTime típus, a minimális érték 1/1/0001 0:00:00, nyilvánvalóan kívül esik a sql érték minimális tartományán, ami adattúlterhelési hibát eredményez.
    Nézzük meg, hogyan lehet a .net és sql max minimum időt C#-on keresztül látni:


Kimeneti hatás:



Végül több mint tíz percig babrálták,

A végső hibaokok a következők:

Az objektum egyik attribútumtípusa szintén objektum, vagyis a táblának van egy idegen kulcsa, és egy új datetime attribútumot adnak hozzá az idegen kulcstáblához, amely nem kap értéket, és nem nullable típusra van állítva

Egy objektum hozzáadásakor vagy frissítésekor a külföldi kulcs objektum datetime automatikusan hozzárendeli az alapértelmezett értéket, mivel a .net alapértelmezett érték ideje kevesebb, mint az adatbázis alapértelmezett minimumideje

Megoldás: Állítsd be a idegen kulcs datetime típusának tulajdonságát nullable típusra, segíts kollégáknak tökéletesen megoldani!







Előző:.net/c# művelet Redis gyorsítótár hozzáadása, törlése, módosítása és lekérdezése [forráskód]
Következő:asp.net Weboldal anomália hibaelemzése
Lemondás:
A Code Farmer Network által közzétett összes szoftver, programozási anyag vagy cikk kizárólag tanulási és kutatási célokra szolgál; A fenti tartalmat nem szabad kereskedelmi vagy illegális célokra használni, különben a felhasználók viselik az összes következményet. Az oldalon található információk az internetről származnak, és a szerzői jogi vitáknak semmi köze ehhez az oldalhoz. A fenti tartalmat a letöltés után 24 órán belül teljesen törölni kell a számítógépéről. Ha tetszik a program, kérjük, támogassa a valódi szoftvert, vásároljon regisztrációt, és szerezzen jobb hiteles szolgáltatásokat. Ha bármilyen jogsértés történik, kérjük, vegye fel velünk a kapcsolatot e-mailben.

Mail To:help@itsvse.com