2012-07-23 2 views
1

회사의 이전 서버에서 새로운 서버로 시스템을 복사하려고하는데 이전 시스템 개발에 개입하지 않았습니다. 그들은 데이터베이스에 레코드를 삽입하는 현재 (복잡한) 웹 페이지를 가지고 있으며 완전히 이해하지 못했습니다. 그러나 각 페이지의 코드와 데이터베이스 설정은 완전히 동일합니다. 완성되지 않은 양식 (내 버전)을 삽입하려고하면 Field 'invoiceNo' doesn't have a default value이 나오지만 이전 시스템에서 완료되지 않은 동일한 양식을 제출하면 불완전한 데이터가 생성됩니다.왜 특정 MySQL 필드가 기본값을 원하십니까?

나는 범죄자 필드에 대한 설정을 확인했으며 "Null"기본값과 함께 Null이 아닌 것으로 설정되었습니다. 두 데이터베이스가 동일하게 설정되었으므로 삽입 된 동일한 데이터가 왜 다르게 취급됩니까?

올드 MySQL 버전 :-NT 5.0.41 - 커뮤니티

새로운 MySQL의 버전 : 5.5.20

올드 MySQL의 관리자 버전 : 1.2.12

새로운 MySQL의 관리자 버전 : 1.2.17

미안 내가 말하고있는 것에 대해 단서가 많지 않다는 것을 유감스럽게 생각한다 - 진실은 이전 시스템이 나에게 낯선 사람인 것처럼 진실이 아니다. 거대하고 복잡하다. 어떤 질문에도 대답 할 수 있습니다.

+0

열이 auto_increment입니까? 이전 데이터베이스에서? 그리고 MySQL v1.2 ?? 확실하지 않습니다. – eggyal

+0

auto_increment가 없습니다. 필드 중 하나가 날짜이므로 자동 증가 일 수 없습니다. 내 잘못, 그것은 MySQL 관리자 1.2.12입니다. 실제 MySQL 버전은 오래되었습니다 : 5.0.41-community-nt, new는 5.5.20입니다. (둘 다 선택 버전()에 의해, 쿼리 브라우저에서) – Andy

답변

1

새 서버가 "엄격한"것으로 설정되었거나 새 버전을 도입했을 때 이전 버전과의 호환 중단이 발생할 수 있습니다.

이 필드를 기본값 "0"으로 변경하면 널 필드 (null field)를 변경하면 필드가 "not null"을 기대하지만 null을 제공합니다 (예 : 예상되는 데이터를 제공하지 않음). 대신 0으로 기본 설정되며 데이터는 예상대로 추가되어야합니다. (그러나 필드가 "null이 아님"을 예상하는 경우 "null"을 제출해서는 안됩니다. 따라서 기본값 = 0으로 해킹하기 전에 경로 원인을 확인해야합니다.)

관련 문제