Ta članek je zrcalni članek strojnega prevajanja, kliknite tukaj za skok na izvirni članek.

Pogled: 22966|Odgovoriti: 1

[Vir] spring.net nhibernate sqldatetime overflow solution

[Kopiraj povezavo]
Objavljeno na 13. 09. 2017 14:34:58 | | | |
SqlDateTime overflow. Mora biti med 1.1.1753 ob 00:00:00 in 31.12.9999 ob 23:59:59




Ko sem izvajal posodobitev s spletne strani, sem ves čas dobival napako in mislil sem, da je kriva XML konfiguracija ali pa je šlo kaj narobe, ko se je SQL ukaz izvedel

Poskusil sem uporabiti SQL analizator poizvedb za pridobitev generiranih SQL stavkov in ugotovil, kje je težava s pravilnim izvajanjem? SQL izjava je naslednja:

izvršni sp_executesql N'VSTAVITI V dbo. LeanLogs (Version, OrganizationId, CustomInfoId, LastLeanAlarmType, NowLeanAlarmType, InsertTime, leatedTime) VREDNOSTI (@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. Rešitev mora biti --- med 1. 1. 1753 ob 00:00 in 31. 12. 9999 ob 23:59

Vzrok napake

    Če je vrednost vrste časa, ki se posreduje podatkovni bazi, NULL, ali pa je ob vstavljanju oziroma posodabljanju baze za DateTime.MinValue vrednost polja datetime privzeto ničelna.
    NULL se tukaj nanaša na null v programski kodi, in večina primerov, kjer se to zgodi, je: v programu je definirana časovna spremenljivka, ki se posreduje v bazo podatkov (ali shranjeno proceduro) brez dodelitve vrednosti. Trenutno je vrednost te spremenljivke privzeto dodeljena 01/01/01.
     Ker je v podatkovni bazi polje DateTime tip, je minimalna vrednost 1/1/1753 12:00:00, medtem ko je . NET Framework, tip DateTime, minimalna vrednost je 1/1/0001 0:00:00, seveda je izven minimalnega območja vrednosti sql, kar povzroči napako pri prelivanju podatkov.
    Poglejmo, kako videti .net in sql max minimalni čas preko C#:


Izhodni učinek:



Na koncu so ga popravljali več kot deset minut,

Zadnji vzroki napak so naslednji:

Ena od vrst atributov objekta je prav tako objekt, torej ima tabela tuji ključ, v tabelo tujih ključev pa se doda nov atribut datetime, ki nima dodeljene vrednosti in ni nastavljena na ničelni tip

Pri dodajanju ali posodabljanju objekta se datum in čas tujega ključa samodejno pripiše privzeti vrednosti, ker je čas privzete vrednosti .net krajši od privzetega minimalnega časa v bazi podatkov

Rešitev: Nastavite lastnost datumskega tipa tujega ključa na ničelni tip, pomagajte sodelavcem pri popolnem reševanju!







Prejšnji:.NET/C# Operacija Redis dodajanje, brisanje, spreminjanje in poizvedba predpomnilnika [izvorna koda]
Naslednji:asp.net Analiza napak anomalij na spletni strani
Disclaimer:
Vsa programska oprema, programski materiali ali članki, ki jih izdaja Code Farmer Network, so namenjeni zgolj učnim in raziskovalnim namenom; Zgornja vsebina ne sme biti uporabljena v komercialne ali nezakonite namene, sicer uporabniki nosijo vse posledice. Informacije na tej strani prihajajo z interneta, spori glede avtorskih pravic pa nimajo nobene zveze s to stranjo. Zgornjo vsebino morate popolnoma izbrisati z računalnika v 24 urah po prenosu. Če vam je program všeč, podprite pristno programsko opremo, kupite registracijo in pridobite boljše pristne storitve. Če pride do kakršne koli kršitve, nas prosimo kontaktirajte po elektronski pošti.

Mail To:help@itsvse.com