Ten artykuł jest lustrzanym artykułem tłumaczenia maszynowego, kliknij tutaj, aby przejść do oryginalnego artykułu.

Widok: 22966|Odpowiedź: 1

[Źródło] spring.net nhibernate sqldatetime overflow solution

[Skopiuj link]
Opublikowano 13.09.2017 14:34:58 | | | |
Przepełnienie SqlDateTime. Musi to być między 1.01.1753 a 31.12.9999 o 23:59:59




Podczas wykonywania operacji aktualizacji ze strony internetowej ciągle pojawiał się błąd i myślałem, że to kwestia konfiguracji XML albo coś poszło nie tak podczas wykonywania instrukcji SQL

Próbowałem użyć SQL query analyzer, aby pobrać wygenerowane instrukcje SQL i zauważyłem, że jaki jest problem z poprawnym wykonaniem? Instrukcja SQL brzmi następująco:

Exec sp_executesql N'INSERT do dbo. LeanLogs (Version, OrganizationId, CustomInfoId, LastLeanAlarmType, NowLeanAlarmType, InsertTime, leatedTime) WARTOŚCI (@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
Przepełnienie SqlDateTime. Rezolucja musi zostać --- między 1.01.1753 o 00:00:00 a 31.12.9999 o 23:59:59

Przyczyna błędu

    Jeśli wartość typu czasu przekazanego do bazy danych jest NULL, lub podczas wstawiania lub aktualizacji bazy dla DateTime.MinValue, wartość pola datetime jest domyślnie null.
    NULL odnosi się tutaj do null w kodzie programu, a większość sytuacji, w których tak się dzieje, to: w programie definiowana jest zmienna typu czasowego, która jest przekazywana do bazy danych (lub procedury przechowywanej) bez przypisywania wartości. Obecnie wartość tej zmiennej jest domyślnie przypisana jako 01/01/01.
     Ponieważ pole typu DateTime w bazie danych jest minimalną wartością 1/1/1753 12:00:00, natomiast . NET Framework, typ DateTime, minimalna wartość to 1/1/0001 0:00:00, oczywiście jest poza minimalnym zakresem wartości sql, co skutkuje błędem przepełnienia danych.
    Przyjrzyjmy się, jak zobaczyć maksymalny minimalny czas .NET i SQL w C#:


Efekt wyjściowy:



Ostatecznie była poprawiana przez ponad dziesięć minut,

Ostatnie przyczyny błędu są następujące:

Jednym z typów atrybutów obiektu jest również obiekt, czyli tabela ma klucz obcy, a do tabeli kluczy obcych dodaje się nowy atrybut date-time, który nie otrzymuje wartości i nie jest ustawiony na typ nullowalny

Podczas dodawania lub aktualizacji obiektu, data czasu obcego klucza jest automatycznie przypisana do wartości domyślnej, ponieważ czas domyślnej wartości .net jest mniejszy niż domyślny minimalny czas bazy danych

Rozwiązanie: Ustaw właściwość typu datetime obiektu klucza obcego na typ nullable, pomóż współpracownikom rozwiązać to perfekcyjnie!







Poprzedni:.NET/C# Operacja Redis Dodawanie, usuwanie, modyfikacja i zapytania pamięci podręcznej [Kod źródłowy]
Następny:asp.net Analiza błędów anomalii stron internetowych
Zrzeczenie się:
Całe oprogramowanie, materiały programistyczne lub artykuły publikowane przez Code Farmer Network służą wyłącznie celom edukacyjnym i badawczym; Powyższe treści nie mogą być wykorzystywane do celów komercyjnych ani nielegalnych, w przeciwnym razie użytkownicy ponoszą wszelkie konsekwencje. Informacje na tej stronie pochodzą z Internetu, a spory dotyczące praw autorskich nie mają z nią nic wspólnego. Musisz całkowicie usunąć powyższą zawartość z komputera w ciągu 24 godzin od pobrania. Jeśli spodoba Ci się program, wspieraj oryginalne oprogramowanie, kup rejestrację i korzystaj z lepszych, autentycznych usług. W przypadku naruszenia praw prosimy o kontakt mailowy.

Mail To:help@itsvse.com