이 글은 기계 번역의 미러 문서이며, 원본 기사로 바로 이동하려면 여기를 클릭해 주세요.

보기: 22966|회답: 1

[출처] spring.net nhibernate sqldatetime overflow solution

[링크 복사]
게시됨 2017. 9. 13. 오후 2:34:58 | | | |
SqlDateTime 오버플로우. 1753년 1월 1일 오전 12:00:00부터 9999년 12월 31일 오후 11:59:59 사이여야 합니다




웹사이트에서 업데이트 작업을 수행할 때 계속 오류가 발생했고, XML 설정이나 SQL 문이 실행될 때 문제가 생긴 줄 알았습니다

SQL 쿼리 분석기를 사용해 생성된 SQL 문장을 가져와보려 했는데, 올바른 실행에 무슨 문제가 있는지 알게 되었습니다. SQL 문장은 다음과 같습니다:

임원sp_executesql dbo에 삽입. LeanLogs (버전, OrganizationId, CustomInfoId, LastLeanAlarmType, nowLeanAlarmType, InsertTime, TreatedTime) 값 (@p0, @p1, @p2, @p3, @p4, @p5, @p6); 선택 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 오버플로우. 해결책은 1753년 1월 1일 오전 12:00:00부터 12/31/999 오후 11:59:59 사이에 ---되어야 합니다

오류 원인

    데이터베이스에 전달되는 시간 타입의 값이 NULL이거나, DateTime.MinValue를 삽입하거나 업데이트할 때 datetime 필드 값은 기본적으로 null입니다.
    여기서 NULL은 프로그램 코드 내의 null을 의미하며, 이런 경우가 대부분 다음과 같습니다: 시간에 타입 변수가 정의되어 있고, 값을 할당하지 않고 데이터베이스(또는 저장 프로시저)에 전달됩니다. 이 시점에서 이 변수의 값은 기본적으로 01/01/01로 할당됩니다.
     데이터베이스의 DateTime 타입 필드 때문에 최소 값은 1/1/1/1753 12:00:00이며, . NET 프레임워크의 DateTime 타입은 최소 값이 1/1/0001 0:00:00이며, 이는 SQL 값의 최소 값 범위를 벗어나 있어 데이터 오버플로우 오류가 발생합니다.
    C#을 통해 .net과 SQL 최소 사용 시간을 확인하는 방법을 살펴보겠습니다:


출력 효과:



결국 10분 넘게 손봤다,

최종 오류 원인은 다음과 같습니다:

객체의 속성 유형 중 하나는 객체이기도 한데, 즉 테이블에 외래 키가 있고, 값이 할당되지 않고 nullable 타입으로 설정되지 않은 새로운 datetime 속성이 외래키 테이블에 추가됩니다

객체를 추가하거나 업데이트할 때, .net 기본값의 시간이 데이터베이스의 기본 최소 시간보다 짧기 때문에 외래키 객체의 datetime이 자동으로 기본값에 부착됩니다

해결책: 외래키 객체의 datetime 타입 속성을 nullable type으로 설정해 동료들이 완벽하게 해결할 수 있도록 도와주세요!







이전의:.net/c# 운영 REDIS: 캐시 추가, 삭제, 수정 및 쿼리 [소스 코드]
다음:asp.net 웹사이트 이상 오류 분석
면책 조항:
Code Farmer Network에서 발행하는 모든 소프트웨어, 프로그래밍 자료 또는 기사는 학습 및 연구 목적으로만 사용됩니다; 위 내용은 상업적 또는 불법적인 목적으로 사용되지 않으며, 그렇지 않으면 모든 책임이 사용자에게 부담됩니다. 이 사이트의 정보는 인터넷에서 가져온 것이며, 저작권 분쟁은 이 사이트와는 관련이 없습니다. 위 내용은 다운로드 후 24시간 이내에 컴퓨터에서 완전히 삭제해야 합니다. 프로그램이 마음에 드신다면, 진짜 소프트웨어를 지원하고, 등록을 구매하며, 더 나은 진짜 서비스를 받아주세요. 침해가 있을 경우 이메일로 연락해 주시기 바랍니다.

Mail To:help@itsvse.com