2013-01-21 3 views
0

저는 잠시 동안 MVC, CodeFirst 및 MySql Connector .NET을 사용해 왔습니다. 지금까지 모든 것이 매력처럼 작동했습니다.CodeFirst를 통해 생성 된 데이터베이스 내보내기

하지만 지금은 해결할 수없는 문제에 직면하고 있습니다 ... 몇 가지 이유로 인해 다른 서버에 사용중인 데이터베이스를 이동해야했습니다. 그리고 나는 이것을 .sql 파일을 통해보다 간단한 방법으로 시도하고있다.

데이터베이스의 내용을 새 서버로 가져온 후 데이터베이스 구조는 괜찮습니다. 그러나 웹 사이트가 EF를 통해 데이터베이스 내용에 액세스하려고하면 이상한 문제가 발생합니다 (MySql.Data.MySqlClient.MySqlException : '필드 목록의 Extent3.item'알 수 없음)

해결할 답변을 찾으려고합니다. 내 문제는 이런 종류의 문제가 FK를 사용하여 제대로 작성되지 않은 관계로 인해 발생한다는 사실을 깨달았습니다. 그러나, 제 경우에는 데이터베이스 이동을 시도하기 전에 모든 것이 작동했기 때문에 적용되지 않습니다.

그런 다음 데이터베이스 스키마에 대한 정보가 커넥터에 의해 어딘가에 저장된다는 사실을 알게되었습니다. (사실, 이것이 사실인지는 모르겠지만 어딘가에있는 것을 읽은 것 같습니다.) 그래서 문제는 데이터베이스를 .sql 파일로 내보낼 때 일부 정보가 누락되었다는 것입니다.

그래서 ... 데이터베이스의 내용을 새 서버로 내보내고 가져 오기 위해 올바른 단계를 수행하고 있는지 알고 싶습니다. 내가 아니라면 어떻게 진행해야합니까? 나는 문제의 근원이 될 수 있습니까?

감사합니다.

+1

시도해 볼 수있는 것은 예외를 발생시키는 쿼리에서'.ToString()'을 수행하는 것입니다. 이렇게하면 쿼리에 대해 생성되는 SQL 쿼리가 제공됩니다. 이제 데이터베이스에 대해 Sql을 실행하고 동일한 오류가 있는지 확인하십시오. Sql 쿼리를 분석하고 데이터베이스 스키마와 비교하십시오. 이것은 올바른 방향으로 당신을 가리켜 야합니다. – Pawel

+0

글쎄, 나는 당신이 제안한 것을 해냈다. 그리고 그것은 전혀 도움이되지 않았다. 나는 이전 데이터베이스에서 쿼리 문자열을 사용할 때 매력처럼 작동한다. 그러나 새로운 데이터베이스에서이를 사용할 때 : "알 수없는 'Extent3.item'필드 목록에 알 수없는 컬럼이 발생합니다. 재미있는 점은 : 이전 데이터베이스에 "Extent3"테이블이 없다는 것입니다 ... 그러나 쿼리가 여전히 작동합니다 ... 무슨 일이 일어날 지 모르겠군요 ... –

+0

결국 귀하의 제안이 도움이되었습니다. 오류가 하하를 찾으십시오. 고마워, 파블. –

답변

0

문제가 해결되었습니다.

서버의 SO가 다릅니다. 이전 버전은 Windows를 실행 중이었습니다. 새로운 버전은 Linux를 실행합니다. 테이블 이름에 대해 대소 문자를 구분하는 것은 기본적으로 linux MySQL에서 켜져 있으며 이전 데이터베이스는 대소 문자를 구분하지 않습니다. 따라서 새 데이터베이스에서 대소 문자를 구분하는 테이블 이름 만 비활성화해야했습니다.

관련 문제