Tento článok je zrkadlovým článkom o strojovom preklade, kliknite sem pre prechod na pôvodný článok.

Pohľad: 22966|Odpoveď: 1

[Zdroj] spring.net nhibernate sqldatetime overflow solution

[Kopírovať odkaz]
Zverejnené 13. 9. 2017 14:34:58 | | | |
SqlDateTime pretečenie. Musí to byť medzi 1.1.1753 00:00:00 a 31.12.9999 o 23:59:59




Pri vykonávaní aktualizačnej operácie z webu som stále dostával chybu a myslel som si, že je to XML konfigurácia alebo sa niečo pokazilo pri vykonaní SQL príkazu

Skúsil som použiť SQL query analyzer na získanie generovaných SQL príkazov a zistil som, aký je problém so správnym vykonávaním? SQL príkaz je nasledovný:

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 pretečenie. Riešenie musí byť --- medzi 1.1.1753 o 00:00:00 a 31.12.9999 do 23:59:59

Príčina chyby

    Ak je hodnota časového typu odovzdaného databáze NULL, alebo pri vkladaní či aktualizácii databázy na DateTime.MinValue, hodnota poľa datetime je predvolene null.
    NULL tu označuje null v programovom kóde a väčšina scenárov, kde sa to stane, je: v programe je definovaná premenná typu času, ktorá sa odovzdá databáze (alebo uloženej procedúre) bez priradenia hodnoty. V tomto momente je hodnota tejto premennej predvolene priradená 01/01/01.
     Keďže pole typu DateTime v databáze je minimálna hodnota 1/1/1753 12:00:00, zatiaľ čo . NET Framework, typ DateTime, minimálna hodnota je 1/1/0001 0:00:00, samozrejme, je mimo minimálneho rozsahu hodnoty sql, čo vedie k chybe pretečenia dát.
    Pozrime sa, ako vidieť .net a sql max minimálny čas cez C#:


Výstupný efekt:



Nakoniec sa na ňom pracovalo viac ako desať minút,

Konečné príčiny chýb sú nasledovné:

Jedným z typov atribútov objektu je zároveň objekt, teda tabuľka má cudzí kľúč a do tabuľky cudzích kľúčov sa pridá nový atribút datetime, ktorý nemá priradenú hodnotu a nie je nastavený na nulovateľný typ

Pri pridávaní alebo aktualizácii objektu sa dátumový čas cudzieho kľúčového objektu automaticky priradí k predvolenej hodnote, pretože čas predvolenej hodnoty .net je menší ako predvolený minimálny čas databázy

Riešenie: Nastavte vlastnosť typu datetime objektu cudzieho kľúča na nullable typ, pomôžte kolegom to dokonale vyriešiť!







Predchádzajúci:.NET/C# Operácia Redis pridávanie, mazanie, úprava a dotazovanie cache [zdrojový kód]
Budúci:asp.net Analýza chýb webových stránok
Vyhlásenie:
Všetok softvér, programovacie materiály alebo články publikované spoločnosťou Code Farmer Network slúžia len na vzdelávacie a výskumné účely; Vyššie uvedený obsah nesmie byť použitý na komerčné alebo nezákonné účely, inak nesú všetky následky používateľmi. Informácie na tejto stránke pochádzajú z internetu a spory o autorské práva s touto stránkou nesúvisia. Musíte úplne vymazať vyššie uvedený obsah zo svojho počítača do 24 hodín od stiahnutia. Ak sa vám program páči, podporte originálny softvér, zakúpte si registráciu a získajte lepšie originálne služby. Ak dôjde k akémukoľvek porušeniu, kontaktujte nás prosím e-mailom.

Mail To:help@itsvse.com