Ця стаття є дзеркальною статтею машинного перекладу, будь ласка, натисніть тут, щоб перейти до оригінальної статті.

Вид: 22966|Відповідь: 1

[Джерело] spring.net nhibernate sqldatetime overflow solution

[Копіювати посилання]
Опубліковано 13.09.2017 14:34:58 | | | |
Переповнення SqlDateTime. Має бути між 1/01/1753 та 12:00:00 та 31.12.9999 23:59:59




Під час операції оновлення з сайту я постійно отримував помилку, і думав, що це XML-конфігурація або щось пішло не так під час виконання SQL-оператора

Я спробував використати SQL query analyzer, щоб отримати згенеровані SQL-оператори, і з'ясував, у чому проблема з правильним виконанням? SQL-оператор виглядає так:

Виконавчий sp_executesql N'INSERT У DBO. LeanLogs (Version, OrganizationId, CustomInfoId, LastLeanAlarmType, nowLeanAlarmType, InsertTime, TreatedTime) ЗНАЧЕННЯ (@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. Резолюція має бути --- між 1/01/1753 12:00:00 та 31.12.9999 23:59:59

Причина помилки

    Якщо значення типу часу, переданого до бази даних, дорівнює NULL, або при вставці чи оновленні бази даних для DateTime.MinValue, значення поля datetime за замовчуванням є null.
    NULL тут означає null у програмному коді, і більшість сценаріїв, де це відбувається, такі: у програмі визначена змінна типу часу, яка передається до бази даних (або збереженої процедури) без присвоєння значення. На даний момент значення цієї змінної за замовчуванням присвоюється 01/01/01.
     Оскільки поле типу DateTime у базі даних мінімальне значення становить 1/1/1753 12:00:00, тоді як . NET Framework, тип DateTime, мінімальне значення — 1/1/0001 0:00:00, очевидно, воно виходить за межі мінімального діапазону значень SQL, що призводить до помилки переповнення даних.
    Давайте подивимось, як бачити .net і sql max min time через C#:


Вихідний ефект:



Врешті-решт його налаштовували понад десять хвилин,

Остаточні причини помилок такі:

Один із типів атрибутів цього об'єкта також є об'єктом, тобто таблиця має зовнішній ключ, а до таблиці зовнішніх ключів додається новий атрибут datetime, якому не присвоюється значення і він не встановлюється на нульований тип

При додаванні або оновленні об'єкта дата часу зовнішнього ключа автоматично прив'язується до значення за замовчуванням, оскільки час .net за замовчуванням менший за мінімальний час бази даних

Рішення: Встановіть властивість типу datetime об'єкта зовнішнього ключа на nullable тип, допоможіть колегам ідеально її розв'язати!







Попередній:.NET/C# Операція REDIS Додавання, видалення, модифікація та запит [вихідний код]
Наступний:asp.net Аналіз помилок аномалій вебсайту
Застереження:
Усе програмне забезпечення, програмні матеріали або статті, опубліковані Code Farmer Network, призначені лише для навчання та досліджень; Вищезазначений контент не повинен використовуватися в комерційних чи незаконних цілях, інакше користувачі несуть усі наслідки. Інформація на цьому сайті надходить з Інтернету, і спори щодо авторських прав не мають до цього сайту. Ви повинні повністю видалити вищезазначений контент зі свого комп'ютера протягом 24 годин після завантаження. Якщо вам подобається програма, будь ласка, підтримуйте справжнє програмне забезпечення, купуйте реєстрацію та отримайте кращі справжні послуги. Якщо є будь-яке порушення, будь ласка, зв'яжіться з нами електронною поштою.

Mail To:help@itsvse.com