Tento článek je zrcadlovým článkem o strojovém překladu, klikněte zde pro přechod na původní článek.

Pohled: 22966|Odpověď: 1

[Zdroj] spring.net nhibernate sqldatetime overflow solution

[Kopírovat odkaz]
Zveřejněno 13.09.2017 14:34:58 | | | |
SqlDateTime přetečení. Musí to být mezi 1.1.1753 00:00:00 a 31.12.9999 ve 23:59:59




Při provádění aktualizace z webu jsem pořád dostával chybu a myslel jsem si, že je to XML konfigurace, nebo že se něco pokazilo při spuštění SQL příkazu

Zkusil jsem použít SQL query analyzer k získání generovaných SQL příkazů a zjistil jsem, že v čem je problém se správným vykonáním? SQL příkaz je následující:

exec sp_executesql N'INSERT do dbo. LeanLogs (Version, OrganizationId, CustomInfoId, LastLeanAlarmType, NowLeanAlarmType, InsertTime, leatedTime) HODNOTY (@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 přetečení. Usnesení musí být --- mezi 1. 1. 1753 v 00:00 a 31. 12. 19999 do 23:59

Příčina chyby

    Pokud je hodnota časového typu předaného databázi NULL, nebo při vkládání či aktualizaci databáze pro DateTime.MinValue, je hodnota pole datetime ve výchozím nastavení null.
    NULL zde označuje null v programovém kódu a většina situací, kdy k tomu dochází, je: v programu je definována proměnná typu časového typu a je předána do databáze (nebo uložené procedury) bez přiřazení hodnoty. V tuto chvíli je hodnota této proměnné ve výchozím nastavení přiřazena 01/01/01.
     Protože pole typu DateTime v databázi je minimální hodnota 1/1/1753 12:00:00, zatímco . NET Framework, typ DateTime, minimální hodnota je 1/1/0001 0:00:00, samozřejmě je mimo minimální rozsah hodnoty sql, což vede k chybě přetečení dat.
    Podívejme se, jak vidět .net a sql max minimální čas přes C#:


Výstupní efekt:



Nakonec se na něm pracovalo více než deset minut,

Konečné příčiny chyb jsou následující:

Jedním z typů atributů objektu je také objekt, tedy tabulka má cizí klíč a do tabulky cizích klíčů je přidán nový atribut datetime, který nemá přiřazenou hodnotu a není nastaven na nulovatelný typ

Při přidávání nebo aktualizaci objektu je datum okamžiku cizího klíče automaticky přiřazeno k výchozí hodnotě, protože čas výchozí hodnoty .net je menší než výchozí minimální čas databáze

Řešení: Nastavte vlastnost typu datetime objektu cizího klíče na nullable type, pomozte kolegům ji vyřešit dokonale!







Předchozí:.NET/C# Operace Redis přidávání, mazání, úprava a dotazování cache [zdrojový kód]
Další:asp.net Analýza chyb webových anomálií
Zřeknutí se:
Veškerý software, programovací materiály nebo články publikované organizací Code Farmer Network slouží pouze k učení a výzkumu; Výše uvedený obsah nesmí být používán pro komerční ani nelegální účely, jinak nesou všechny důsledky uživatelé. Informace na tomto webu pocházejí z internetu a spory o autorská práva s tímto webem nesouvisí. Musíte výše uvedený obsah ze svého počítače zcela smazat do 24 hodin od stažení. Pokud se vám program líbí, podporujte prosím originální software, kupte si registraci a získejte lepší skutečné služby. Pokud dojde k jakémukoli porušení, kontaktujte nás prosím e-mailem.

Mail To:help@itsvse.com